gpt4 book ai didi

java - 从 JFrame 引用 JPanel 组件

转载 作者:行者123 更新时间:2023-11-29 08:11:44 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com