qq_30941763 2017-08-27 03:31 采纳率: 100%
浏览 4507
已采纳

java中panel的背景图片总是挡住按钮怎么解决?

package ShootGame;

import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ShootGame extends JFrame
{
GamePanel jp;
JButton beginButton;
JButton settingsButton;
JButton helpButton;

public static BufferedImage startBackGound;
static
{
try {
startBackGound=ImageIO.read(ShootGame.class.getResource("startBackGround.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ShootGame()
{
super("飞机大战");
setSize(1920,821);
jp=new GamePanel();
getContentPane().add(jp);

beginButton=new JButton("开始游戏");
settingsButton=new JButton("设置");
helpButton=new JButton("帮助");

jp.add(beginButton);
jp.add(settingsButton);
jp.add(helpButton);

beginButton.setBounds(500,500,100,20);
settingsButton.setBounds(500,530,100,20);
helpButton.setBounds(500,560,100,20);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

class GamePanel extends JPanel
{
GamePanel()
{
setLayout(null);
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.drawImage(startBackGound, 0, 0, null);
}
}
public static void main(String[] args)
{
new ShootGame();
}
}

  • 写回答

2条回答 默认 最新

  • Liekkas_BX 2017-08-27 05:06
    关注

    你只需记住一点,每次都是重绘整个组件,所以你paint方法中应该绘制了背景图片后,还要绘制里面包含的按钮等组件。此外,鼠标覆盖、菜单弹窗
    等直接影响到该组件显示的行为都会自动触发该组件的repaint 方法,而repaint最终调用paint,所以paint 中必须每次都绘制完整的显示信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)