背景:
Java语言
A类中包含两个面板,其中一个面板是对C类的实例(C包含于A类中,没有分开写),而另一个面板则需要C面板中的按钮,通过事件侦听来进行变换(变换新的面板内容或者弹出一个窗口),方法是调用项目中其他的类 Class 。
问题:
在C类中按钮写了方法,但是变换面板的时候,比如用到类B,B不显示,弹出新的窗口时窗口内容不显示,而且关闭这个窗口,整个项目就关闭了。希望有人解答,我是新手 没多少分了,以后有多分一定记得给大家,谢谢了
1、
A类是个继承JFrame 的类
B类是继承JPanel的类
我在A类中调用一个B类,希望在A中添加B这样的JPanel
可是不显示,怎么办,为什么?B 中设置了setVisiable(true);
2、
A类中 还包含一个继承JPanel的类C,C的实例已经包含在A中了,C中有按钮,添加按钮事件调用项目中另一个类D,D和A一样是继承JFrame,但是窗口出来了,D中的内容却不显示。为什么呢?
3、
关闭一个JFrame,所有的窗口都关闭了 有什么方法解决么?
4、
JSplitPanel的disable()  方法不能用??
我希望 初始并固定它的宽度,setDividerLocation(150)是固定好像不管用,固定宽度呢?   
5、
JBuilder运行速度怎么那么慢呢? 一句话就听了,我的电脑是不好,很早以前的内存256 但是也慢的夸张了吧55
谢谢

解决方案 »

  1.   

    1.查看一下B中是否有设置显示大小
    2.D是否有设置setVisibale()
    3.你可以设置开启一个JFrame的时候另一个隐藏
    要么在构造中 this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    要么使用多线程
      

  2.   

    大概代码如下(思路错了么?):
    // 第一个类A
    class A extends JFrame{
     JSplitPane jsplit=new JSplitPane();
      JPanel jpan;  //contentPane()
      JPanel pan1=new JPanel();//pan1
      MyGroupPanel groupan=new MyGroupPanel();//使用本类当中的面板类
      JPanel panCon=new JPanel();
    JButton jbn=new JButton("1");
    ……//略
    public A(){
      pan1.add(jbn);//面板1 填充
      panCon.setLayout(new CardLayout());//设置为CardLayout布局
      panCon.add(pan1,"test");// 添加面板
      panCon.add(new B(),"all");//添加外部的一个面板 来自B类  jsplit.setLeftComponent(groupan);//左侧面板
      jsplit.setRightComponent(panCon);//右侧面板
      jpan.add(jsplit);
    ……//略
    }class MyGroupPanel extends JPanel implements ActionListener{
    private JPanel jpan = new JPanel();
    JButton bt1= new JButton();
    JButton bt2= new JButton();
    JButton bt3= new JButton();
    MyGroupPanel(){
        ……//省略 添加按钮到面板里
        bt1.addActionListener(this);
        bt2.addActionListener(this);
        bt3.addActionListener(this);
    }
     public void actionPerformed(ActionEvent e) {
          if (e.getSource() == bt1) {
            CardLayout cl = (CardLayout)(panCon.getLayout());
            cl.show(panCon, "all");//在这里出错,不显示??????????      }else if (e.getSource() == bt2) {
            CardLayout cl = (CardLayout)(panCon.getLayout());
            cl.show(panCon, "test"); //调用内部的JPanel 显示
          }elsef (e.getSource() == bt3) {
    ……
          }
    }//第二个类B,这里个类中不能用getContentPane()??我希望写多个B这样的类,然后在A中调用class B extends JPanel{
    JPanel contentPane;
    JLabel lab=new JLabel("test");
    public B(){
    contentPane=new JPanel();
    contentPane.setLayout(null);
    lab.setBounds(20,20,150,30);
        contentPane.add(lab);
        this.add(contentPane);
        this.setVisible(true);
        this.setSize(450, 360);
    }
    }
    思路错了么?
    在JFrame类中能调用一个 JInternalFrame类对象么?好像不可以……
         this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    这两个方法都会把整个程序关闭,如果不写的话,默认就关闭窗口,而不关闭整个项目了;
    不知道默认的是什么方法?
      

  3.   


     B中设置了contentPane.setBounds(15,15,400,350);用于显示大小
    D是有设置setVisibale(ture) 
    多线程不怎么用,默认就可以关闭一个窗口而不关闭项目了