程序排错:菜单留下背景色
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); 执行的是什么?设置的是哪里的尺寸? 展开
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); 执行的是什么?设置的是哪里的尺寸? 展开
1个回答
展开全部
一.你在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 广告
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生...
点击进入详情页
本回答由博思aippt提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询