问题涉及我项目中的两个类:主要类和绘图类。 主类创建JFrame并在其中放置2个JPanel。 第一个JPanel包含输入数字的JTextFields,以及用于选择不同选项的JButtons,还有一个“开始”按钮和一个重置按钮。第二个JPanel是绘图类的一个实例。
第二类,绘图类应该绘制图形,然后绘制数字的视觉表示(三角形/梯形)。基本上应该在启动项目时绘制图形(直到现在都没有问题),然后在按下开始按钮后绘制数字(没有任何反应)。 以下是与问题相关的部分代码。
Public class MainMenu extends JFrame implements ActionListener {
private JPanel mainPanel;
public static void main(String[] args) {
MainMenu app = new MainMenu();
app.setVisible(true);
app.setResizable(false);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setBounds(250, 200, 1200, 600);
}
public MainMenu() {
drawing = new DrawingTool();
mainPanel.add(drawing); //draws the graphs on launch
//extra code. not relevant
}
public void Run(){
// more code
drawing.updateVariables(numberA,numberB,numberC,operation,precision);
}
第二课
public class DrawingTool extends JPanel{
boolean numbersUpdated=false;
public void updateVariables(Nr nrA, Nr nrB, Nr nrC, int op, int prec){
fzzyA = nrA;
fzzyB = nrB;
fzzyC = nrC;
operation = op;
precision = prec;
}
public void paintComponent(Graphics g){
//draw the graphs - this works
if(numbersUpdated){
//draw the numbers
}
}
此外,如果我想将绘图JPanel重置为仅通过按下重置按钮绘制图形的点,是否只能将numbersUpdates设置为false?
答案 0 :(得分:2)
然后在按下开始按钮后绘制数字(没有任何反应)。
每当你更改Swing组件的属性时,你需要调用repaint()来告诉组件自己绘制。
因此,在您的updateVariables(...)
方法中,您需要在方法的末尾添加repaint()
语句。