gpt4 book ai didi

java - 学习 GUI - 使用 actionPerformed() 处理按钮操作

转载 作者:行者123 更新时间:2023-12-02 03:51:41 25 4
gpt4 key购买 nike

我正在通过教程学习 GUI,并且可以通过一些建议来了解处理当前不起作用的内容的最佳方法。

背景:我有一个包含 main 方法的类,该方法扩展 JFrame,并初始化一个扩展 JPanel (panel1) 的类。

panel1 包含一个硬编码的 .txt 文件 URL,该文件的内容决定了框架中显示的内容(这很好)。我正在尝试修改程序,以便用户可以从他们的计算机中选择 .txt 文件...

为此,我创建了第三个类,名为 panel2(扩展 JPanel,实现 ActionListener),其中包含一个 JButton。 (我创建了一个新的 JPanel,因为还会有更多按钮,因此它提供了布局)。

我从 panel2 中挑选了与问题相关的代码:

private String f;
private JButton b;

在构造函数中:

b = new JButton("Button");
add(b);

方法:

public String getName() {
return f;
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == b) {
int returnVal = fc.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
this.f = fc.getSelectedFile().getAbsolutePath();

如果我调用 getName(),它会返回 null。我需要将字符串传递到 panel1 中以替换硬编码的 URL,我打算使用 getName() 来做到这一点。我知道我在这里做了一些非常基本的错误!任何指示将不胜感激。

最佳答案

我不确定我是否正确理解了您的问题...

但是,如果您希望 panel1 在选择 panel2 中的文件时使用react,则需要从 panel2 到 panel1 的引用。有不同的方法可以做到这一点:

  • 您可以简单地将 panel1 对象作为 panel2 构造函数中的参数,并在需要时调用 panel1 的方法。
  • 或者您可以使用监听器。例如,panel2 可以触发 url 属性的属性更改事件。当您的 panel2 扩展 JPanel 时,它已经具有处理属性更改监听器的所有方法(请参阅方法 firePropertyChangeaddPropertyChangeListener)。然后让 panel1 监听这个事件。

关于java - 学习 GUI - 使用 actionPerformed() 处理按钮操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35831895/

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