当前位置: 代码迷 >> Eclipse >> JFrame加入背景图片后菜单不能一般显示
  详细解决方案

JFrame加入背景图片后菜单不能一般显示

热度:79   发布时间:2016-04-23 12:46:44.0
JFrame加入背景图片后菜单不能正常显示
我加入一张图片做JFrame的背景 要求Panel类ChessPad要在背景的前端 但我加入背景图后 菜单条和菜单都不能正常显示(需要鼠标点击才显示) 求达人帮我修改 跪谢!
另外,为什么我把class ChessPad extends Panel的Panel改为JPanel 后棋盘为什么会显示不出来?

[code=Java][/code]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.Color;
import java.lang.Object;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

//创建棋盘的类
class ChessPad extends JPanel
{
  Button button=new Button("重新开局");
  TextField text_1=new TextField("请黑棋下子");
  ChessPad()
  { setSize(440,440);
  setLayout(null);
  this.setBackground(new Color(197,97,12)); //注意这里不要漏写 new
  add(button);
  button.setBounds(10,3,60,26);
  add(text_1);
  text_1.setBounds(90,3,90,24);
  text_1.setEditable(false);
  }
  public void paint(Graphics g) //绘制棋盘方格
  { for(int i=30;i<=410;i=i+20) //画横线
  { g.drawLine(30,i,410,i);
  }
  for(int j=30;j<=410;j=j+20) //画竖线
  { g.drawLine(j,30,j,410);
  }
  }
}

public class WuZiQi02 extends JFrame
{
JMenuBar menubar;
JMenu menu1,menu2;
  ChessPad chesspad=new ChessPad();
  WuZiQi02()
  {
super("简易五子棋"); //程序框标题
menubar=new JMenuBar();
menubar.setOpaque(true); //菜单条是否透明
menu1=new JMenu("游戏");
menu2=new JMenu("帮助");
menubar.add(menu1);
menubar.add(menu2);
setJMenuBar(menubar);
setVisible(true);
  setLayout(null);

  add(chesspad);
  chesspad.setBounds(70,90,440,440);
  addWindowListener(new WindowAdapter()
  {public void windowClosing(WindowEvent e)
  {System.exit(0);
  }
  });
  pack();
  setSize(900,750);
  validate();
  }

  //设置Frame的背景图
  public void paint(Graphics g){
  BufferedImage image = null;
  try{
  image = ImageIO.read(new File("icons/d.jpg") ); //图片路径
  }
  catch(IOException e){
  e.printStackTrace();
  }
  g.drawImage(image,0,70,this);
  //g.drawImage(image,0,0,this.getWidth(), this.getHeight(),null); 设置适应窗口
  }

public static void main(String args[])
  { WuZiQi02 chess=new WuZiQi02();
  }
}
 

------解决方案--------------------
图片路径 一定是 磁盘下的绝对路径
image = ImageIO.read(new File("D:\\icons\\d.jpg")); // 图片路径

换成绝对路径就解决了
------解决方案--------------------
你把绘制图片的方法。放在绘制棋盘的方法,,后面调用。。也就是说,,要让程序选调用绘制图片的方法,再调用绘制棋盘的方法
------解决方案--------------------
我函数可能写的不对,不够编译器会提示你的。
------解决方案--------------------
我用SWT开发时用也遇到一个问题,就是添加datechooser的时候他总时报file not found,郁闷啊,求指导。。。
------解决方案--------------------
为何不分2个panel呢 menu放一个panel 图片放另一个panel