代码片段在这里:
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);
整个代码都在我的applet的paint(g)方法中。我的目标是让用户能够看到JLabel。计算完全没问题。但是当我运行时,applet看起来像:
我已经知道setText行不应该在paint(g)中,但是,在这种情况下,它应该去哪里以使JLabel保持不变,直到生成一个新的三角形(通过单击“点击我“按钮”?
请注意,我是一名高中生,自学Java,因此,我对该语言的了解看起来像是一块瑞士奶酪。我很感激解释不能解释太多高于基本applet制作水平的主题。 :)
感谢任何帮助!谢谢!
答案 0 :(得分:2)
大概你有一个动作监听器附加到“点击我”按钮。
当触发动作时,我会在那时更新标签和UI。
您可能希望阅读How to Write an Action Listener
(我也有点担心看起来你使用的是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);
}
}
}