gpt4 book ai didi

java - 单击 Jbutton 时,按钮会移动或标签文本会更改。我只想同时执行这两个操作

转载 作者:行者123 更新时间:2023-12-01 18:55:20 27 4
gpt4 key购买 nike

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.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); //remove comments cause button move
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();
}
});
}
}

最佳答案

您正在使用 GridLayout,因此您不能随机移动组件。我建议您阅读 Laying Out Components Within a Container 上的 Swing 教程了解布局管理的工作原理。

关于java - 单击 Jbutton 时,按钮会移动或标签文本会更改。我只想同时执行这两个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com