当前位置: 代码迷 >> J2SE >> 一个JPanel可以镶嵌到另一个JPanel中的吗?该如何解决
  详细解决方案

一个JPanel可以镶嵌到另一个JPanel中的吗?该如何解决

热度:12   发布时间:2016-04-24 00:47:39.0
一个JPanel可以镶嵌到另一个JPanel中的吗?
新手学java,照书上做了个例子,发现面板上的内容不能显示,猜可能是JPanel里不能镶嵌另一个JPanel造成的,所以问一下。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test implements ActionListener
{
JFrame f;//主要的框架
JPanel da;//用来分层
JPanel g1;//上方的面板
JScrollPane g2;//下面有滚动条的面板
JLabel b1;//四个标签
JLabel b2;
JLabel b3;
JLabel b4;
JTextField text;//用来输入名字的文本框
JPanel bu;//用来放两个单选框
JRadioButton button1;//两个单选框
JRadioButton button2;
JPanel bo;//用来放三个复选框
JCheckBox box1;//三个复选框
JCheckBox box2;
JCheckBox box3;
JComboBox xia;//一个下拉框
String a[];
JButton ok;//确定按钮
JTextArea o;
public Test()
{
//实现声明
JFrame f=new JFrame("试一下看怎么样");
JPanel g1=new JPanel();
JScrollPane g2=new JScrollPane();
JLabel b1=new JLabel("姓名:");
JLabel b2=new JLabel("性别:");
JLabel b3=new JLabel("爱好:");
JLabel b4=new JLabel("籍贯");
JTextField text=new JTextField();
JPanel bu=new JPanel();
JRadioButton button1=new JRadioButton("男");
JRadioButton button2=new JRadioButton("女");
bu.add(button1);
bu.add(button2);
JPanel bo=new JPanel();
JCheckBox box1=new JCheckBox("体育");
JCheckBox box2=new JCheckBox("音乐");
JCheckBox box3=new JCheckBox("美术");
bo.add(box1);
bo.add(box2);
bo.add(box3);
String a[]={"ok?","0000"};
JComboBox xia=new JComboBox(a);
g1.setLayout(new GridLayout(4,2));
g1.add(b1);
g1.add(text);
g1.add(b2);
g1.add(bu);
g1.add(b3);
g1.add(bo);
g1.add(b4);
g1.add(xia);
JTextArea o=new JTextArea();
g2.add(o);
JButton ok=new JButton("确定");
g2.add(ok);
JPanel da=new JPanel();
da.setLayout(new GridLayout(3,1));
da.add(g2);
ok.addActionListener(this);
//设标题框架
f.add(da);
f.setLocation(500,500);
f.setSize(600,600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[])
{
Test r=new Test();
}
public void actionPerformed(ActionEvent e)
{
System.out.println(text.getText());
}
}

------解决方案--------------------
JPanel是可以镶嵌到另一个JPanel里面去的,下面是我改的代码
Java code
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Test implements ActionListener{    JFrame f;//主要的框架    JPanel da;//用来分层    JPanel g1;//上方的面板    JScrollPane g2;//下面有滚动条的面板    JLabel b1;//四个标签    JLabel b2;    JLabel b3;    JLabel b4;    JTextField text;//用来输入名字的文本框    JPanel bu;//用来放两个单选框    JRadioButton button1;//两个单选框    JRadioButton button2;    JPanel bo;//用来放三个复选框    JCheckBox box1;//三个复选框    JCheckBox box2;    JCheckBox box3;    JComboBox xia;//一个下拉框    String a[];    JButton ok;//确定按钮    JTextArea o;        public Test()    {        //实现声明        JFrame f=new JFrame("试一下看怎么样");        JPanel g1=new JPanel();        JScrollPane g2=new JScrollPane();        JLabel b1=new JLabel("姓名:");        JLabel b2=new JLabel("性别:");        JLabel b3=new JLabel("爱好:");        JLabel b4=new JLabel("籍贯");        JTextField text=new JTextField();        JPanel bu=new JPanel();        JRadioButton button1=new JRadioButton("男");        JRadioButton button2=new JRadioButton("女");        bu.add(button1);        bu.add(button2);        JPanel bo=new JPanel();        JCheckBox box1=new JCheckBox("体育");        JCheckBox box2=new JCheckBox("音乐");        JCheckBox box3=new JCheckBox("美术");        bo.add(box1);        bo.add(box2);        bo.add(box3);        String a[]={"ok?","0000"};        JComboBox xia=new JComboBox(a);        g1.setLayout(new GridLayout(4,2));        g1.add(b1);        g1.add(text);        g1.add(b2);        g1.add(bu);        g1.add(b3);        g1.add(bo);        g1.add(b4);        g1.add(xia);        JTextArea o=new JTextArea();        g2.add(o);        JButton ok=new JButton("确定");        //g2.add(ok);            JPanel da=new JPanel();        da.setLayout(new GridLayout(3,1));        da.add(g1);        da.add(g2);        da.add(ok);        ok.addActionListener(this);        //设标题框架        f.add(da);        f.setLocation(500,500);        f.setSize(600,600);        f.setVisible(true);        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }        public static void main(String args[])    {        Test r=new Test();    }        public void actionPerformed(ActionEvent e)    {        System.out.println(text.getText());    }}