【问题标题】:Reference a jPanel component from a separate class从单独的类中引用 jPanel 组件
【发布时间】:2014-07-07 02:32:24
【问题描述】:

掌握 Java 编程并制作了一个简单的游戏。

我想为它制作一个包含两个不同“屏幕”的 GUI 我发现交换屏幕的最佳方法是使用 CardLayout。

所以,我有一个包含 IntroPanel 或 GamePanel 的容器面板。

通过做

contPanel.setLayout(cl);
            contPanel.add(introPanel, "1");
            contPanel.add(gamePanel, "2");
            cl.show(contPanel, "1");

我可以将显示值从 1 更改为 2,它会更改正在显示的面板。

效果很好,我的问题是: 如何引用 introPanel 上的 jButton1? 我想在一个 jButton 上添加一个事件处理程序,但是在这个类中(所以我可以交换面板)

谢谢,

迈克

代码:

    public static void main(String[] args) {    
    boolean playAgain = true;

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JFrame GUI = new JFrame();

            GUI.setVisible(true);
            GUI.setSize(500, 500);
            GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            CardLayout cl = new CardLayout();

            // Different Panels //
            JPanel contPanel = new JPanel();
            JPanel introPanel = new IntroPanel();
            JPanel gamePanel = new GamePanel();
                            introPanel.jLabel1.getText();

            // Card layout //
            contPanel.setLayout(cl);
            contPanel.add(introPanel, "1");
            contPanel.add(gamePanel, "2");
            cl.show(contPanel, "1");
            GUI.add(contPanel);
        }
    });

【问题讨论】:

    标签: java swing jcomponent


    【解决方案1】:

    我想您的 introPanel 扩展了 JPanel。您可能使用 Netbeans GUI 工具进行了此操作,因此 jpanel1 是一个私有实例。 首先将其添加到您的 introPanel 代码中:

    public JButton getJButton1() {
        return jbutton1;
    }
    

    然后像这样从这个类中调用它:

    JButton jbutton1 = introPanel.getJButton1();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 2023-01-03
      • 2014-01-28
      相关资源
      最近更新 更多