关于按钮隐藏和JFrame的repaint()函数
就是一个测试程序,java新手,想做一个游戏开始前的开始按钮。点击以后就会开始游戏,按钮自动隐藏。可是我这个怎么不起作用,另外按钮放到borderlayout布局管理里怎么调整大小。我得repain()函数也不能把之前画的矩形给擦出了。求大神指教,新手···
import java.awt.BorderLayout;
import java.awt.*;
import javax.swing.*;
import java.util.Timer;
import java.awt.event.*;
/**
*
* @author Ma
*/
public class MyFrame extends JFrame {
public int start;//游戏状态 可以不用管没用
private final int wight=500,high=510;//窗口大小
JPanel p;
//GUI构件
public JButton button;
public MyFrame(){
super("TankWarII");
p=new JPanel();
p.setLayout(new FlowLayout());
start=0;
button=new JButton("开始游戏");
button.setPreferredSize(new Dimension(120, 50));
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
start=1;
button.setVisible(false);
button.setEnabled(false);
repaint();
}
});
this.add(p,BorderLayout.NORTH);
p.add(button);
this.setSize(wight, high);
}
int i=100;
public void paint(Graphics g){
if(start==1){
g.setColor(Color.red);
g.fill3DRect(10, 30, i, i, true);
i--;
}
if(i==0){
i=0;
start=0;
repaint();
}
}
}
class aa{
public static void main(String arg[]){
MyFrame aa=new MyFrame();
aa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aa.setVisible(true);
}
}
------解决方案--------------------调整大小用
setSize();
或者
setBounds();
至于没有隐藏的问题,你首先监听里面添加个输出语句看看是否执行了这段代码。
repaint();一般不需要调用。
------解决方案--------------------
button.addActionListener(new ActionListener(){