gpt4 book ai didi

java - 在 Paint(g) 中设置 JLabel 的文本 - 这是错误的吗?

转载 作者:行者123 更新时间:2023-12-02 07:27:11 25 4
gpt4 key购买 nike

代码片段在这里:

        int area;
int[] xcoords = new int[3];
xcoords[0] = coordsAX;
xcoords[1] = coordsBX;
xcoords[2] = coordsCX;
sortArray(xcoords);
int[] ycoords = new int[3];
ycoords[0] = coordsAY;
ycoords[1] = coordsBY;
ycoords[2] = coordsCY;
sortArray(ycoords);
//Remember, array[0] is the biggest and array[2] is the smallest!
int rectWidth = xcoords[0] - xcoords[2];
int rectHeight = ycoords[0] - ycoords[2];

area = (rectWidth * rectHeight);
System.out.println(area);
lblArea.setText("Area: " + area);

整个代码都在我的小程序的 Paint(g) 方法中。我的目标是让用户能够看到 JLabel。计算绝对顺利。但是当我运行时,小程序看起来像:

enter image description here

我发现setText行不应该在paint(g)中,但是在这种情况下,它应该放在哪里才能做到这一点,以便JLabel保持不变,直到生成一个新的三角形(通过单击“单击“我”按钮)?

请注意,我是一名自学 Java 的高中生,因此,我对这门语言的了解就像一 block 瑞士奶酪。我希望解释不要解释太多远高于基本小程序制作水平的主题。 :)

感谢任何帮助!谢谢!

最佳答案

大概您有一个附加到“单击我”按钮的 Action 监听器。

当操作被触发时,我会更新此时的标签和 UI。

您可能想通读How to Write an Action Listener

(我还有点担心您看起来使用的是 AWT 而不是 Swing,但我可能弄错了;))

更新示例

enter image description here

public class TestArea {

public static void main(String[] args) {
new TestArea();
}

public TestArea() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new AreaPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class AreaPane extends JPanel {

private JLabel areaLabel;

public AreaPane() {
areaLabel = new JLabel("Area: ...");
JButton clickMe = new JButton("Click Me");
clickMe.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
areaLabel.setText("Area: " + NumberFormat.getNumberInstance().format(Math.random() * 1000));
// update UI as required
}

});

add(areaLabel);
add(clickMe);
}
}
}

关于java - 在 Paint(g) 中设置 JLabel 的文本 - 这是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390974/

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