0

代码片段在这里:

        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。计算非常顺利。但是当我运行时,小程序看起来像:

在此处输入图像描述

我已经收集到 setText 行不应该在 paint(g) 中,但是在这种情况下,它应该去哪里才能使它成为 JLabel 保持不变,直到生成一个新的三角形(通过单击“单击我”按钮)?

请注意,我是一名自学 Java 的高中生,因此,我对这门语言的了解就像一大块瑞士奶酪。我会很感激没有解释太多远高于基本小程序制作水平的主题的解释。:)

感谢任何帮助!谢谢!

4

1 回答 1

2

大概你有一个附加到“点击我”按钮的动作监听器。

当动作被触发时,我会在那时更新标签和 UI。

您可能想阅读如何编写动作侦听器

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

更新示例

在此处输入图像描述

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);
        }
    }
}
于 2012-11-15T03:11:03.380 回答