ボタンをクリックしたときにボタンを移動したいだけでなく、ラベルのテキストを変更したいです。
ボタンを移動するためのコードを書きましたが、うまく機能しています。しかし、ラベルのテキストを別の名前に変更したい場合、それは起こりません。
ボタンがその場所から移動しているか、ラベルのテキストが変更されています。しかし、ボタンクリックイベントなど、両方のアクションを一度に実行したいです。できる限り多くのことを試しました。誰かが私を助けることができますか?
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class JavaGUI extends JPanel {
private Control control = new Control();
private Keys keys = new Keys("Original starting value.");
public JavaGUI() {
this.add(keys);
this.add(control);
}
private class Control extends JPanel {
public Control() {
this.add(new JButton(new AbstractAction("Update") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Command: " + e.getActionCommand());
keys.string = String.valueOf(System.nanoTime());
//keys.label.setText(keys.string);
// If I remove these comments button will not move. bt I want both...
JButton j = (JButton) e.getSource();
j.setLocation(j.getX()+10,j.getY()+10);
}
}));
}
}
private class Keys extends JPanel {
private String string;
private JLabel label = new JLabel();
public Keys(String s) {
this.string = s;
label.setText(s);
this.add(label);
}
}
private void display() {
JFrame f = new JFrame("JavaGUI");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new JavaGUI().display();
}
});
}
}