【发布时间】:2019-05-28 16:11:57
【问题描述】:
嘿,我想要一个 JFrame,它必须有按钮“LeftButton”和“RightButton”以及一个 JTextArea。在我按下两个之一后,我希望 JTextArea 在新行中写入已按下的按钮。为了做到这一点,我想使用一个 MyActionListener 类,它引用了实现 Actionlistener 的 JTextArea。
我尝试为 ActionPerformed 提供 JTextArea 并意识到我必须自己创建 Setter。然后我意识到 MyActionListener 类还需要一个像 JTextArea 这样的对象,它与 JFrame 类中的相同。然后我发现我还必须更新 JFrame 类中的 JTextArea,我现在有点卡住了。我试图将 Setter 放入 JFrame 类并从 MyActionListener 调用它们但没有成功,我尝试做类似A_18_c.south = south
package Aufgabe_18;
import javax.swing.*;
import java.awt.*;
public class A_18_c extends JFrame {
private Button LeftButton;
private Button RightButton;
private JScrollPane scroll;
private JTextArea south;
private MyActionListener MAL;
public static void main(String[] args) {
A_18_c l = new A_18_c("Aufgabe18c");
}
public A_18_c(String title) {
super(title);
setSize(300, 150);
this.setLocation(300, 300);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
MAL = new MyActionListener(south);
south = new JTextArea(5, 20);
south.setEditable(false);
JScrollPane sroll = new JScrollPane(south);
this.add(sroll, BorderLayout.SOUTH);
LeftButton = new Button("Left Button");
LeftButton.setOpaque(true);
LeftButton.addActionListener(MAL);
this.add(LeftButton, BorderLayout.WEST);
RightButton = new Button("Right Button");
RightButton.setOpaque(true);
RightButton.addActionListener(MAL);
this.add(RightButton, BorderLayout.EAST);
setVisible(true);
}
}
MyActionListener:
package Aufgabe_18;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyActionListener implements ActionListener{
private final JTextArea south;
public MyActionListener(JTextArea south)
{
this.south = south;
}
private void setTextLeftButton(JTextArea south){
south.append("Left Button \n");
}
private void setTextRightButton(JTextArea south){
south.append("Right Button \n");
}
@Override
public void actionPerformed(ActionEvent e) {
String a;
Object src = e.getSource();
Button b = null;
b = (Button) src;
a = b.getString();
if (a == "LeftButton")
setTextRightButton(south);
if (a == "RightButton")
setTextRightButton(south);
}
}
我希望 JTextArea 写出按下了哪个按钮,但按下后什么也没有发生。没有错误弹出。
【问题讨论】:
-
您的按钮名称有空格。您的听众的支票不占空间。
标签: java swing jframe actionlistener jtextarea