誤った文字列を更新しているか、対応するラベルのテキストを正しく設定していない可能性があります。どちらも必須です。下の例では(名前を使用して)、ボタンのactionPerformed()
に2つの更新が密接に結合されています。より緩やかに結合されたアプローチは、hereと表示されます。
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;
/** @see https://stackoverflow.com/questions/9053824 */
public class JavaGUI extends JPanel {
private Control control = new Control();
private Keys keys = new Keys("Original starting value.");
public JavaGUI() {
this.setLayout(new GridLayout(0, 1));
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);
}
}));
}
}
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();
}
});
}
}
問題を再現する最小限のコードを記入してください。 – Mat
あなたのJBossのActionListenerで表示されているJLabelへの正しい参照を使用していない可能性があります - おそらくこの記事はあなたを助けることができますhttp://stackoverflow.com/questions/9046175/updating-jlabel/9046558#9046558 –
- しかしコードなしで、誰が知っている。あなたの質問が実際に答えることができるように十分な情報を与えてください。私たちは時間を無駄にする必要はありません。 –