2 qq 30941763 qq_30941763 于 2017.08.27 11:31 提问

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个回答

qq_19865749
qq_19865749   2017.08.27 13:06
已采纳

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

zy841958835
zy841958835   Ds   Rxr 2017.08.27 12:22

先 g.drawImage(startBackGound, 0, 0, null);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java 设置JPanelyou 背景图片 并且上层JPanel 不会覆盖下层JPanel背景图片
import java.awt.*;import javax.swing.*;public class backpic  extends JPanel { String strpic = new String();//继承这个类的时候 传一个图片位置的字符串  public backpic(String strpic) {  this.strpic = strpic;    }pu...
swing中panel设置背景图片
<br />import java.awt.BorderLayout;<br />import java.awt.Color;<br />import java.awt.Graphics;<br />import java.awt.GridLayout;<br />import javax.swing.ImageIcon;<br />import javax.swing.JButton;<br />import javax.swing.JFrame;<br />import javax.swing.JLab
为Jpanel设置背景图片
前言:在网上看到了很多方法,一开始总想在Jpanel类创建的时候设置背景图片,如下 Jpanel bg = new Jpanel(){ /* 绘制背景图片代码 */ }; 尝试了很多代码都不行,后来转念一想,直接创建一个绘制好背景图片的Jpanel类 package Player; import java.awt.Graphics; import java.awt.Image;
java自带webservice功能实现Javax.jws.WebService--JAX-WS
Java自带功能建立webservice   通过main方法发布接口第一步:创建接口类package ws;import javax.jws.WebService;/** * 接口 * @author LM */@WebServicepublic interface MyService {public int add(int x, int y);public int dec(int x, int...
java swing 设置背景图片的方法一
下面是偶写着玩的下测试的代码:(不好之处,请多多指教,大家共同进步) import java.awt.*; import javax.swing.*; public class ImageDemo { public ImageDemo(){ //加载图片 ImageIcon icon=new ImageIcon("images/psu.jpg"); //Image i
[JAVA]①重绘JPanel面板,设置窗体背景图片
由于在网上查询的方法众多,而且方法有的地方复杂化,其实不用特别复杂编写代码,只要关键点的地方写对了,就可以运行。 此写法本人整理了网上思路编写,简单明了~~~!import java.awt.BorderLayout; import java.awt.Graphics; import javax.swing.*; /** * 自定义背景图片,重绘JPanel面板的paintComponent
4、Swing在JPanel中添加背景图片方法
4、Jpanel面板中加载背景图片 在实际应用Java做界面的过程中,常常会涉及到加载背景图片以使页面美化。下面整理了一个小模块以便于调用。 1 package com.tntxia.commonswing.panel; 2 3 import java.awt.*; 4 import javax.swing.JPanel; 5 6 /*
自己制作一个可以设置背景图片的Jpanel
自己制作一个可以设置背景图片的Jpanel java swing组件一般是没有设置背景图片的功能,例如jpanel是不存在设置背景图片的,那么该怎么办,我的解决办法是使用 MyEclipse中的Matisse Palette中的Custom自己写一个可以设置背景图片的Jpanel,具体步骤如下 一、在你这个工程里面写一个新类,让他继承Jpanel,重写paintComponent方法,如下
JPanel设置背景以及Jpanel设置透明的解决办法
p1.setBackground(null); p1.setOpaque(false); 通常情况下  JPanel p = new JPanel(){ @Override protected void paintComponent(Graphics g) { ImageIcon icon = new Imag
解决键盘遮挡注册或登录按钮
简单的几行代码解决键盘遮挡登录或注册按钮 在项目开发中,这种情况是十分常见的,尤其是在登录界面,登录按钮经常被键盘挡住,导致用户输入完账号之后需要关闭键盘,然后再输入密码,然后再关掉键盘,点击登陆。十分繁琐,一旦用户输入错误,就要重复上述步骤。 今天的这个小案例,就是一次性解决键盘遮挡问题,动态的计算,登陆按钮显示需要的高度,进而滚动布局,使之每次输入,键盘都无法遮挡输入框以及按钮