gpt4 book ai didi

java - 没有调用函数就绘制图?

转载 作者:行者123 更新时间:2023-11-30 08:13:37 25 4
gpt4 key购买 nike

我在 Java 程序中移动圆时遇到问题。该程序有 2 个基本按钮:

START:用于移动圆

STOP:用于退出程序

我的问题是在我按下开始按钮之前圆圈就出现了。但是,我仅在按下“开始”按钮时才调用移动,这使得调用重新绘制,然后应该出现圆圈。但它是默认出现的。我移动圆圈没有问题。这是我的源代码:

 import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Moving extends JFrame implements ActionListener
{
JButton start,stop;Move mypanel;

Moving()
{
setTitle("Moving circle");
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,600);
start=new JButton("START");
stop=new JButton("STOP");
start.addActionListener(this);stop.addActionListener(this);
JPanel p=new JPanel();
p.setLayout(new FlowLayout());
p.add(start);p.add(stop);
getContentPane().add(p,BorderLayout.SOUTH);
mypanel=new Move();
getContentPane().add(mypanel,BorderLayout.CENTER);

}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if(s.equals("STOP"))
System.exit(0);
else if(s.equals("START"))
mypanel.move();
}
public static void main(String []args)
{
Moving obj=new Moving();
obj.setVisible(true);
}
}

class Move extends JPanel
{ static int x=80, cv=0;
public void move()
{
repaint();
}
public void paintComponent(Graphics g)
{
setBackground(Color.green);

super.paintComponent(g);
g.setColor(Color.red);
if(x<500&&cv==0)
{g.fillOval(x, 80, 100, 100);this.inc();}
else if((x>=500||cv==1)&&x>=80)
{
cv=1;g.fillOval(x, 80, 100, 100);this.dec();
}
else cv=0;
}
public void inc()
{
x+=10;
}
public void dec()
{
x-=10;
}
}

最佳答案

默认情况下,setVisible 为 true。因此,如果您不想在加载时显示面板,请在构造函数中将其设置为 false

然后在您点击“开始”时使其可见。

见下文:

class Move extends JPanel {
static int x = 80, cv = 0;

Move(){
setVisible(false); <-- Make it false here
}

public void move() {
this.setVisible(true); <----- make it visible here when you click start
repaint();
}

public void paintComponent(Graphics g) {
setBackground(Color.green);
..... REMAINING CODE
}
}

关于java - 没有调用函数就绘制图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29987348/

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