首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

居然在简单的代码上找不出异常,关于窗体显示.

2011-12-31 
居然在简单的代码上找不出错误,关于窗体显示....Java codeimport java.awt.*import java.awt.event.*imp

居然在简单的代码上找不出错误,关于窗体显示....

Java code
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class bu extends JFrame implements ActionListener{    private  JFrame jf;    private  JButton jb1;    private  JButton jb2;    bu()    {        jf=new JFrame();        jb1=new JButton("jb1");        jb2=new JButton("jb2");        jf.setLayout(new FlowLayout());        jf.setLocation(512,384);        jf.setBounds(10,10,200,400);        jb1.addActionListener(this);        jb2.addActionListener(this);        add(jb1);        add(jb2);        setVisible(true);    }    public void actionPerformed(ActionEvent e)    {        JButton temp;        temp=(JButton)e.getSource();        if(temp==jb1) System.out.println("jb1");        if(temp==jb2) System.out.println("jb2");    }    public static void main(String args[])    {        new bu();    }}


[解决办法]
LZ既然已经继承了JFrame 
为什么还要在构造方法中new JFrame()?
[解决办法]
太乱了写的。
class bu 。。。。。
[解决办法]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class bu extends JFrame implements ActionListener
{
private JFrame jf;
private JButton jb1;
private JButton jb2;
bu()
{
jf=new JFrame();
jb1=new JButton("jb1");
jb2=new JButton("jb2");
jf.getContentPane().setLayout(new FlowLayout());
jf.setLocation(512,384);
jf.setBounds(10,10,200,400);
jb1.addActionListener(this);
jb2.addActionListener(this);
jf.getContentPane().add(jb1);
jf.getContentPane().add(jb2);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JButton temp;
temp=(JButton)e.getSource();
if(temp==jb1) System.out.println("jb1");
if(temp==jb2) System.out.println("jb2");
}
public static void main(String args[])
{
new bu();
}
}
[解决办法]
class bu本身就是JFrame的子类 .你在里面设置了半天jf这个成员 
Java code
package com.myapp.struts;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class Main {    public static void main(String[] args) {        new Bu();    }}class Bu extends JFrame implements ActionListener {    private JButton jb1;    private JButton jb2;    public Bu() {        jb1 = new JButton("jb1");        jb2 = new JButton("jb2");        setLayout(new FlowLayout());        setLocation(512, 384);        setBounds(10, 10, 200, 400);        jb1.addActionListener(this);        jb2.addActionListener(this);        add(jb1);        add(jb2);        setVisible(true);    }    public void actionPerformed(ActionEvent e) {        JButton temp;        temp = (JButton) e.getSource();        if (temp == jb1) {            System.out.println("jb1");        }        if (temp == jb2) {            System.out.println("jb2");        }    }}
[解决办法]
Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead。

jf.getContentPane().setLayout(new FlowLayout());
jf.getContentPane().add(jb1);
jf.getContentPane().add(jb2);




[解决办法]

探讨
class bu本身就是JFrame的子类 .你在里面设置了半天jf这个成员 

Java code
package com.myapp.struts;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {

public static void main(String[] args) {
new Bu();
}
}

class Bu extends JFr…

[解决办法]
点错了,6楼的正确
探讨
Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead。

jf.getContentPane().setLayout(new FlowLayout());
jf.getContentPane().add(jb1);
jf.getContentPane().add(jb2);

[解决办法]
你在什么环境运行的?
我在jdk1.4,运行还是错误。
[解决办法]
当有jf的时候,组件都添加到了jf中,而jf并没有调用setVisible方法(最后的setVisible是调用的bu类的),所以没有显示。
当没有jf的时候,组件添加到了bu中,调用setVisible后,显示窗体。
[解决办法]
保留原来的代码,让两个frame都显示出来就好看了.
Java code
package testtest;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;class MyFrame extends JFrame implements ActionListener {    private JFrame jf;    private JButton jb1;    private JButton jb2;    MyFrame() {        jf = new JFrame();        jf.setVisible(true);        jf.setSize(100,200);        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        jf.setBounds(100, 100, 200, 200);        jb1 = new JButton("jb1");        jb2 = new JButton("jb2");        setLayout(new FlowLayout());         jb1.addActionListener(this);        jb2.addActionListener(this);        add(jb1);        add(jb2);        pack();        setVisible(true);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            }    public void actionPerformed(ActionEvent e) {        JButton temp;        temp = (JButton) e.getSource();        if (temp == jb1) {            System.out.println("jb1");        }        if (temp == jb2) {            System.out.println("jb2");        }    }    public static void main(String args[]) {        new MyFrame();    }}
[解决办法]
如前面人所说,已经继承了JFrame了...不用那么费劲了...
[解决办法]
探讨
我这样稍改下,就正确了,为何?
setLayout(new FlowLayout()); //去掉jf.
setLocation(512,384); //去掉jf.
setBounds(10,10,200,400); //去掉jf. ???为什么不去掉就无法正确显示呢???…

[解决办法]
直接在你的构造函数里,
super("你想要的标题名");
再去掉那些jf引用就可以了。

最好还要定义一下初始界面的大小, setSize(300, 200);

热点排行