import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestButton { public static void main(String[] args) {

          ButtonFrame frame = new ButtonFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setSize(150,100);
          frame.setResizable(false);
          frame.setVisible(true);
}}class ButtonFrame extends JFrame{

public ButtonFrame(){

setTitle("test button");
ButtonPanel panel = new ButtonPanel();
add(panel);
//pack();
}

}class ButtonPanel extends JPanel{

public ButtonPanel(){

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,1));

panel.add(new JButton("1"));
panel.add(new JButton("2"));//添加的button怎么不显示?
}


}

解决方案 »

  1.   


    package myframe;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class TestButton {    public static void main(String[] args) { ButtonFrame frame = new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(150, 100);
    frame.setResizable(false);
    frame.setVisible(true);
        }}class ButtonFrame extends JFrame {    public ButtonFrame() { setTitle("test button");
    ButtonPanel panel = new ButtonPanel();
    add(panel);    }}class ButtonPanel extends JPanel {    public ButtonPanel() { setLayout(new GridLayout(2, 1)); add(new JButton("1"));
    add(new JButton("2"));//添加的button怎么不显示?[/color]    }}
      

  2.   


    或者;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class TestButton {    public static void main(String[] args) { ButtonFrame frame = new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(150, 100);
    frame.setResizable(false);
    frame.setVisible(true);
        }}class ButtonFrame extends JFrame {    public ButtonFrame() { setTitle("test button");
    ButtonPanel panel = new ButtonPanel();
    add(panel);    }}class ButtonPanel extends JPanel {    public ButtonPanel() { JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(2, 1)); panel.add(new JButton("1"));
    panel.add(new JButton("2"));//添加的button怎么不显示?[/color] add(panel);
        }}
      

  3.   

    问题出在了ButtonPanel 的构造方法上,你的两个按钮是加在了局部变量上,从来没有加到ButtonPanel自身作为面板上import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class TestButton {    public static void main(String[] args) {          ButtonFrame frame = new ButtonFrame();
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setSize(150,100);
              frame.setResizable(false);
    //          frame.pack();
              frame.setVisible(true);
        }}class ButtonFrame extends JFrame{    public ButtonFrame(){        setTitle("test button");
            ButtonPanel panel = new ButtonPanel();        add(panel);
            //pack();
        }}class ButtonPanel extends JPanel{    public ButtonPanel(){//        JPanel panel = new JPanel();//这里建立panel始终没有加到ButtonPanel里面
            setLayout(new GridLayout(2,1));        add(new JButton("1"));
            add(new JButton("2"));//添加的button怎么不显示?[/color]
        }
    }