程序排错:菜单留下背景色

importjava.applet.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publi... import java.applet.*;
import javax.swing.*;
import java.awt.*; import java.awt.event.*;

public class Test extends JFrame {
Game game;
JMenuBar bar = new JMenuBar();
JMenu menu1 = new JMenu("游戏"),
menu2 = new JMenu("选项"),
menu3 = new JMenu("帮助");
JMenuItem menuItem11 = new JMenuItem("开始"),
menuItem12 = new JMenuItem("退出"),
menuItem31 = new JMenuItem("关于");
JCheckBoxMenuItem
menuItem21 = new JCheckBoxMenuItem("音乐", true);

public Test() {
super(); // 新建窗口
setSize(900, 900); // 设置窗口大小
Menu(); // 添加菜单

Container container = getContentPane();
container.setBackground(Color.black); // 背景颜色
game=new Game();
container.add(game);

setLocationRelativeTo(null); // 窗口居中
setResizable(false);
setVisible(true);
}

private void Menu() {
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
menu1.add(menuItem11);
menu1.addSeparator();
menu1.add(menuItem12);
menu2.add(menuItem21);
menu3.add(menuItem31);
setJMenuBar(bar);
}

public static void main(String[] args) {
new Test();
}

}

// Game 类
class Game extends JPanel implements Runnable {

public void run() {
int i, j;
}

public void paint(Graphics g) {
setSize(500,600);
g.setColor(Color.red);
g.fillRect(50, 70, 320, 450);
g.setColor(Color.black);
g.fillRect(54, 74, 312, 442);
g.setColor(Color.green);
g.drawString("测试程序", 130, 200);
}

}

1、为何菜单消失后背景留下灰白色?
2、paint()方法第一行setSize(500,600); 执行的是什么?设置的是哪里的尺寸?
展开
 我来答
紫薇参星
科技发烧友

2014-02-04 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3603万
展开全部

一.你在Game类的paint函数第一句前加一句super.paint(g);就不会菜单消失后背景留下灰白色了.

    而是哪一块本来就是灰白色,因为你没有给JPanel设置背景色,只给JPanel设置了大小500,600.

二.paint()方法的第一行setSize(500,600);设置的是JPanel,也就是Game的尺寸.

完整的程序如下:(改动的地方见注释,其实就一个地方就是paint函数第一句)

import java.applet.*;
import javax.swing.*; 
import java.awt.*; import java.awt.event.*;
public class Test extends JFrame {
    Game game;
    JMenuBar bar = new JMenuBar();
     JMenu  menu1 = new JMenu("游戏"),
                 menu2 = new JMenu("选项"),
                   menu3 = new JMenu("帮助");
 JMenuItem   menuItem11 = new JMenuItem("开始"),
                          menuItem12 = new JMenuItem("退出"),
                          menuItem31 = new JMenuItem("关于");
 JCheckBoxMenuItem 
                     menuItem21 = new JCheckBoxMenuItem("音乐", true);
 
 public Test() {
        super();          // 新建窗口
        setSize(900, 900);      // 设置窗口大小                  
        Menu();           // 添加菜单
        
        Container container = getContentPane();
        container.setBackground(Color.black);  // 背景颜色
        game=new Game();
        container.add(game);
        
        setLocationRelativeTo(null);  // 窗口居中
        setResizable(false);
          setVisible(true);
    }
private void Menu() {
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        menu1.add(menuItem11);
        menu1.addSeparator();
        menu1.add(menuItem12);
        menu2.add(menuItem21);
        menu3.add(menuItem31);
        setJMenuBar(bar);
    }
     public static void main(String[] args) {
            new Test();
     }
}
// Game 类
class Game extends JPanel implements Runnable {
 
      public void run() {
           int i, j;
      }
      public void paint(Graphics g) {
       super.paint(g);//这里加一句
           setSize(500,600);
           g.setColor(Color.red);
           g.fillRect(50, 70, 320, 450);
           g.setColor(Color.black);
           g.fillRect(54, 74, 312, 442);
           g.setColor(Color.green);
           g.drawString("测试程序", 130, 200);
      }
  
}
博思aippt
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生... 点击进入详情页
本回答由博思aippt提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式