我有一个带有 var 的框架,我将该 var 添加到 JPanel,如果我想将相同的 var 添加到另一个 JPanel,它就会从第一个 JPanel 中消失。我想要一个合乎逻辑的解释来解决我的问题,谢谢! 我想将我的 JLabel 存储在我的两个 jpanel 中。
public class Gui {
JPanel panel1, panel2;
JLabel text = new JLabel("some text");
JFrame frame = new JFrame();
public Gui {
panel1 = new JPanel();
panel1.setLayout(null);
panel1.add(text);
panel1.getComponent(0).setBounds(50,50,50,50);
panel1.setBorder(BorderFactory.createLineBorder(Color.black));
panel1.setBounds(x,y,w,h);
// it`s working, the labels it`s visible
panel2 = new JPanel();
panel2.setLayout(null);
panel2.add(text);
panel2.getComponent(0).setBounds(100,100,50,50);
panel2.setBorder(BorderFactory.createLineBorder(Color.black));
panel2.setBounds(x,y,w,h);
//it`s not working, the label ins`t visible ...
frame.add(panel1);
frame.add(panel2);
}
}
最佳答案
免责声明:我正在编辑我的答案以回应 OP 的评论。但是,我仍然不能完全确定问题的一些细节。随着更多的说明,我很乐意编辑我的答案。
答案: 一种可能的解决方案是创建您正在使用的 Swing 组件的子类。例如,
public class MyPanel extends JPanel {
private JLabel label = new JLabel("some text");
public MyPanel() {
this.add(label);
}
}
现在您可以创建多个 MyPanel
实例,每个实例都有自己的 JLabel。然后您可以将这些面板添加到您的框架中。
已添加:根据评论中提供的附加信息,我会更进一步并创建自定义 JFrame 类:
public class MyFrame extends JFrame {
private MyPanel panel = new MyPanel();
public MyFrame() {
this.add(panel);
}
}
现在您可以创建多个 MyFrame
实例。如果您想走得更远,您可以向这两个自定义类的构造函数添加参数,以在每个实例 MyFrame
中将 JLabel
文本设置为不同的值。我将把细节作为练习留给读者。 (当然,请询问您是否卡住了。)
关于java - 如何在多个 jpanel 中使用一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620154/