我有以下简单的代码:
button.addActionListener(new ComeOnListener(jTextArea1));
button.addActionListener(new ComeOnListener(jTextArea2));
ComeOnListener是作为私有类实现的(它在某种程度上在语法上令人困惑,试图以匿名方式实现它)并且它附加了“Come on!”在它接收的文本区域作为参数。然而,它只是将它附加在jTextArea2上,完全忽略了jTextArea1。听众如下:
private class ComeOnListener implements ActionListener {
JTextArea auxTextArea;
public ComeOnListener(JTextArea jta) {
auxTextArea = jta;
}
@Override
public void actionPerformed(ActionEvent e) {
auxTextArea.append("¡Come on!");
//throw new UnsupportedOperationException("Not supported yet.");
}
}
有人可以告诉我发生了什么事吗?
非常感谢。
答案 0 :(得分:3)
与往常一样,您应该发布SSCCE。这是一段显示所需功能的代码
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AppendTextArea {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame frame = createUI();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
} );
}
private static JFrame createUI(){
JFrame result = new JFrame( "TestFrame" );
JTextArea firstArea = new JTextArea( 30, 30 );
JTextArea secondArea = new JTextArea( 30,30 );
JButton appendButton = new JButton( "Append" );
appendButton.addActionListener( new ComeOnListener( firstArea ) );
appendButton.addActionListener( new ComeOnListener( secondArea ) );
result.add( firstArea, BorderLayout.NORTH );
result.add( secondArea, BorderLayout.CENTER );
result.add( appendButton, BorderLayout.SOUTH );
return result;
}
private static class ComeOnListener implements ActionListener {
private final JTextArea auxTextArea;
public ComeOnListener(JTextArea jta) {
auxTextArea = jta;
}
@Override
public void actionPerformed(ActionEvent e) {
auxTextArea.append("Come on!");
}
}
}
正如您所看到的,您发布的代码只是复制到此代码段并按预期工作。最有可能的问题是您的代码中的其他位置。