我有一个Swing JFrame面板,带有2个文本字段和一个按钮。我需要该按钮能够触发不同文本字段中文本的更改(具体来说,从“开”到“关”)。复杂的因素是我需要它只改变被点击的最后文本区域的文本。Java开关按钮
以下是我的代码到目前为止。请注意,单击文本字段本身会切换我想要的文本。但我也希望按钮切换文本 - 但只有用户在点击按钮之前单击的最后文本区域中的文本。我现在的方式是按钮切换两个文本字段,这是我不想要的。
我怀疑可能有一个简单的方法来实现这个,我忽略了。
public class SwitchesTest extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SwitchesTest().displayJFrame();
}
});
}
private void displayJFrame() {
JFrame frame = new JFrame("Switches");
JButton button = new JButton("Switch");
JTextArea switch1 = new JTextArea("On",1,3);
JTextArea switch2 = new JTextArea("On",1,3);
frame.getContentPane().setLayout(new GridBagLayout());
frame.add(switch1);
frame.add(switch2);
frame.add(button);
button.addActionListener(e -> {
switch1.setText("On".equals(switch1.getText()) ? "Off" : "On");
switch2.setText("On".equals(switch2.getText()) ? "Off" : "On");
});
switch1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
switch1.setText("On".equals(switch1.getText()) ? "Off" : "On");
}
});
switch2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
switch2.setText("On".equals(switch2.getText()) ? "Off" : "On");
}
});
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Java是一种面向对象的语言,因此您应该避免使用静态方法并使用字段和实例方法。 –