我正在从教程中学习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()来实现。我知道我在做一些非常基本的错误!!任何指针都会非常感激。
答案 0 :(得分:2)
我不确定我是否理解你的问题......
但是如果你想让panel1在选择panel2中的文件时作出反应,你需要从panel2到panel1的引用。 有不同的方法:
firePropertyChange
和addPropertyChangeListener
)。然后让panel1听这个事件。