我在JPanel(jp1)
上放了JFrame(fr1)
,但jp2
在哪里?
我想在jp2
上的jp1
中显示fr1
包含内容?
(按钮“start!”和“DEBUGGING”都应显示在窗口上)
怎么办?
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class F extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
F fr1 = new F();
P jp1 = new P();
jp1.add(new JButton("start!"));
fr1.setSize(1024, 768);
fr1.add(jp1, BorderLayout.CENTER);
fr1.setVisible(true);
}
}
class P extends JPanel{
private JPanel jp2;
private JButton b2;
public P(){
jp2 = new JPanel();
jp2.setBackground(Color.green);
b2 = new JButton("DEBUGGING.");
jp2.add(b2);
}
}
答案 0 :(得分:4)
在您的类p中使用this.add
或仅add
将组件添加到jpanel p [class p]。您的类p本身是jpanel
,因为它被{{1}扩展因此您需要将jpanel
添加到该面板。
并关心jp2
layout
panel[class p]
你可以通过setLayout ....在class p中设置布局
class P extends JPanel{
private JPanel jp2;
private JButton b2;
public P(){
jp2 = new JPanel();
jp2.setBackground(Color.green);
b2 = new JButton("DEBUGGING.");
jp2.add(b2);
// setLayout.....use a appropriate layout if you need
add(jp2);
}
}
答案 1 :(得分:2)
您永远不会在jp2
中将P
添加到任何内容
class P extends JPanel{
private JPanel jp2;
private JButton b2;
public P(){
jp2 = new JPanel();
jp2.setBackground(Color.green);
b2 = new JButton("DEBUGGING.");
jp2.add(b2);
//???
}
}
添加add(jp2);
作为最后一个语句