我在一个类中添加了带有JButton的JPanel。我在另一个类中有一个JFrame,还有一个方法可以让您从第二个类中获取JPanel。当我将JFrame的contentpane设置为JPanel时,它是黑色的,但是,如果我将JFrame放在JPanel类中,则它可以正常工作。谢谢您的帮助。
第一类:
public class one {
private static JPanel p = new JPanel();
public one() {
p.setVisible(true);
p.setBackground(Color.BLACK);
p.setLayout(new GridLayout(3, 3, 25, 25));
JButton b = new JButton("Testing");
b.setBounds(60, 60, 100, 100);
b.setVisible(true);
p.add(b);
}
public static JPanel getP() {
return p;
}
}
第二课:
public class two {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(null);
f.setBounds(10, 10, 500, 500);
f.setContentPane(one.getP());
f.setVisible(true);
}
}
答案 0 :(得分:0)
尝试从一个类中删除static关键字,因为您正在一个人的构造函数中执行jpanel操作。请记住,从该类创建新对象时会调用构造函数。将jpanel设为静态并调用jpanel wihtout创建新的一个实例时,将不会执行jpanel操作。所以您的路线可以在下面:
public one() {
p.setVisible(true);
p.setBackground(Color.BLACK);
p.setLayout(new GridLayout(3, 3, 25, 25));
JButton b = new JButton("Testing");
b.setBounds(60, 60, 100, 100);
b.setVisible(true);
p.add(b);
}
public JPanel getP() {
return p;
}
}
public static void main(String[] args) {
JFrame f = new JFrame();
one o = new one();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(null);
f.setBounds(10, 10, 500, 500);
f.setContentPane(o.getP());
f.setVisible(true);
}
}