java - 如何在多个 jpanel 中使用一个变量?

标签 java swing jpanel

我有一个带有 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/

相关文章:

Java复制文件到现有文件夹?

java - 将图像添加到按钮 GUI Java

java - 如何在 Wicket 中返回指向外部 URL 的链接?

java - 如何在Java中的按钮中设置单键助记符?

java - 图像调整大小以适应 JPanel

java - 在同一个 JFrame 中使用多个类

java - 使用独特的 ImageIcons 动态初始化 JButton

java - 覆盖 Java 中的属性

java - 如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?

java - 比较 Java 错误中的两个字符串时间