日期:2014-05-20  浏览次数:20714 次

关于按钮隐藏和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(){