我有一個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是一種面向對象的語言,因此您應該避免使用靜態方法並使用字段和實例方法。 –