gpt4 book ai didi

java - PaintComponent() 的问题

转载 作者:行者123 更新时间:2023-12-02 03:50:43 24 4
gpt4 key购买 nike

问题涉及我项目中的 2 个类:主类和绘图类。主类创建 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?

最佳答案

then draw the numbers after the start button is pressed(nothing happens).

每当您更改 Swing 组件的属性时,您都需要调用 repaint() 来告诉组件自行绘制。

因此,在 updateVariables(...) 方法中,您需要在方法末尾添加 repaint() 语句。

关于java - PaintComponent() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35902575/

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