java - 从 JFrame 引用 JPanel 组件

标签 java swing jframe jpanel

我有一个在 JFrame 中创建 JPanel 的应用程序,如下所示:

public class Frame1{
    public Frame1(){
        Frame2 f2 = new Frame2();
        f2.pack();
        f2.setVisible(true);
    }

    class Frame2 extends JFrame{
        public Frame2(){
            JPanel p1 = new JPanel();
            JTextField txt1 = new JTextField("Test",12);
            p1.add(txt1);
            JButton btn1 = new JButton("Click Me!");
            p1.add(btn1);
            add(p1);
            btn1.addActionListener(this);
        }
        public void actionPerformed(ActionEvent e){
            JOptionPane.showDialog(null,text of the textbox);
        }
    }
}

有没有办法引用文本字段,即使它不是字段变量并且只是在构造函数中声明(this.getRootPane().getParent() 会给我框架我相信,但我从那里去哪里)?

最佳答案

再次重申,为什么不让 JTextField 成为该类的私有(private)非静态字段:

import java.awt.event.*;
import javax.swing.*;

public class Frame1 {
   public Frame1() {
      Frame2 f2 = new Frame2();
      f2.pack();
      f2.setVisible(true);
   }

   class Frame2 extends JFrame implements ActionListener {
      private JTextField txt1;

      public Frame2() {
         JPanel p1 = new JPanel();

         // JTextField txt1 = new JTextField("Test", 12);
         txt1 = new JTextField("Test", 12);

         p1.add(txt1);
         JButton btn1 = new JButton("Click Me!");
         p1.add(btn1);
         add(p1);
         btn1.addActionListener(this);
      }

      // if outside classes need to see the text
      public String getTxt1Text() {
         return txt1.getText();
      }

      public void actionPerformed(ActionEvent e) {
         JOptionPane.showMessageDialog(this, txt1.getText());
      }
   }
}

关于java - 从 JFrame 引用 JPanel 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788539/

相关文章:

java - 使用 jtable 以外的组件检索数据库值?

java - 如何将异常发送到 exceptionController?

java - 如何防止 Query.list() 上出现 StaleObjectStateException?

java - 扩展的 JPanel 破坏了 GridLayout

java - 如何使用 Java Swing 和 MVC 进行真正的 GUI 开发

java - 我需要将面板拆分两次,但我不知道该怎么做

java - 使用 warble 将带有 Rubeus 和 Swing 的 JRuby 脚本打包到 jar 中后退出

java - 如何缩放 JPanel 以适应 JFrame

java - Oracle - 更新记录并在同一查询中返回更新日期

java - 如何准备或模拟 JsonParser 以测试自定义 StdDeserializer