gpt4 book ai didi

Java:我无法将 Action 监听器放在构造函数之外

转载 作者:行者123 更新时间:2023-12-02 03:43:00 24 4
gpt4 key购买 nike

public Server(){
start.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
try{
port = Integer.parseInt(portInput.getText());
}
catch(NumberFormatException e){
text.append("");
}

}

});


}

在构造函数内有 Action 监听器,我无法使用追加方法,因为它告诉我将服务器强制转换添加到 text.append("");

当我这样做时,它告诉我“无法从 JTextArea 转换到服务器”

当我将 Action 监听器移到构造函数之外时,它会给我一个错误,并且基本上迫使我将 Action 监听器放在构造函数内。所以我想要的是能够在构造函数之外拥有 Action 监听器,这样我就可以在 Action 监听器内调用 append 方法。

此时我不知道该怎么办。我确信这是一件小事,但我就是无法弄清楚。请问有什么帮助吗?

最佳答案

我将首先在构造函数中展示基于 addActionListener 的工作代码,我冒昧地介绍了缺少的字段。

public class ServerGUI {

private final JButton startServer = new JButton("Start server");
int port;
private JTextField portInput = new JTextField();
private JTextArea eventsLog = new JTextArea();

public ServerGUI(){
startServer.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
try{
port = Integer.parseInt(portInput.getText());
}
catch(NumberFormatException nfe){
appendEventsLog("");
}
}
});
}

private void appendEventsLog(String msg) {
String text = eventsLog.getText();
eventsLog.setText(text + "\n" + msg);
}
}

这里的问题是appendEventsLog不是JTextArea的成员,而是ServerGUI的成员。

对于第二种情况,在构造函数之外将 ActionListener 分配给 JButton,您必须使用静态代码块或我更喜欢的初始化方法

public class ServerGUI {

private final JButton startServer = new JButton("Start server");
int port;
private JTextField portInput = new JTextField();
private JTextArea eventsLog = new JTextArea();

public ServerGUI(){
initalise();
}

private void initalise() {
startServer.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
try{
port = Integer.parseInt(portInput.getText());
}
catch(NumberFormatException nfe){
appendEventsLog("");
}
}
});
}

private void appendEventsLog(String msg) {
String text = eventsLog.getText();
eventsLog.setText(text + "\n" + msg);
}
}

关于Java:我无法将 Action 监听器放在构造函数之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633126/

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