回 帖 发 新 帖 刷新版面

主题:(求助)关于重绘的问题

请问为什么点击过菜单后窗体没有重绘?
有什么办法解决?
请大家帮忙看看,先谢过了


代码例子如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Tetirs extends JFrame{
    
    static Graphics g;
    
    static Tetirs myTetirs;
    static JMenuBar mBar;
    static JMenu mFile,mOption;
    static JMenuItem fStart,fExit;
            
    public Tetirs(){
        
        g = getGraphics();
        
        mBar = new JMenuBar();
        mFile = new JMenu("文件");
        mOption = new JMenu("设置");
        fStart = new JMenuItem("开始");
        fExit = new JMenuItem("退出");
        
        setDefaultLookAndFeelDecorated(true); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(200,50,300,200); 
        setTitle("test");
        setResizable(false);
        
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);}});
        
        setJMenuBar(mBar);    
        mBar.add(mFile);
        mBar.add(mOption);
        mFile.add(fStart);
        mFile.add(fExit);
        
    }
    
    public static void main(String args[]){        
        myTetirs = new Tetirs();
        
        
        myTetirs.setVisible(true);
        myTetirs.repaint();

    }
    
    public void paint(Graphics g){
        super.paint(g);
        g.setColor(Color.black);
        g.fillRect(0,54,200,100);            
    }        
}

回复列表 (共2个回复)

沙发

这种问题.....常常发生的.......一个比较实用但是不标准的办法是新建线程.在方法的末尾写上;
new Thread {
public void run() {
try {
sleep(500);
} catch (InterruptedException e) {
}
repaint();
}
}.start()

板凳


其实你这个办法我也想过,不过最后我用paintComponent代替了paint就好了,

不过还是非常谢谢你的帮忙!

我来回复

您尚未登录,请登录后再回复。点此登录或注册