我无法在Handler中找到我的头衔。
我的代码示例:
public Frame extends JFrame {
public Frame() {
super("Frame 1");
.
.
.
我的GUI中需要一个按钮,无论何时单击它,都需要将标题从第1帧更改为第2帧,反之亦然。
ButtonHandler handler = new ButtonHandler();
.
.
.
}
class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
JButton but = (JButton) event.getSource();
if (??.getTitle(equals("Frame 1"))) {
setTitle("Frame 2");
} else {
setTitle("Frame 1");
}
所以每当我点击按钮时,它所做的只是其他部分。我不能在if:/
中使用getTitle答案 0 :(得分:2)
首先应该阅读
if (??.getTitle().equals("Frame 1"))
否则你在equals
实例上调用ButtonHandler
并测试,如果该实例等于字符串"Frame 1"
...
然后我会向ButtonHandler
添加一个构造函数,它接受一个框架实例并在内部存储它。我的建议总计:
class ButtonHandler implements ActionListener {
private JFrame frame;
public ButtonHandler(JFrame frame) {
this.frame = frame;
}
public void actionPerformed(ActionEvent event) {
JButton but = (JButton) event.getSource();
if (frame.getTitle().equals("Frame 1")) {
setTitle("Frame 2");
} else {
setTitle("Frame 1");
}
}
}