java swing问题,添加的JButton不显示
下面是部分的程序:publicclassMywork1extendsJFrame{/***@paramargs*///重写piantImageimage1=null;pu...
下面是部分的程序:
public class Mywork1 extends JFrame{
/**
* @param args
*/
//重写 piant
Image image1=null;
public void paint (Graphics g){
super.paint(g);
g.drawImage(image1,10,50,600,500,this);
}
public EnjoyMusic(){
//设置窗体属性
setSize(600,590);
setLocation(330,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
//this.setResizable(false);
//建立切换按钮 ,可是运行之后显示不出来,会不会和paint()有关??
JButton button1=new JButton("切换");
//button1.setSize(50,100);
this.add(button1);
button1.setLocation(250, 500);
// 建立菜单栏
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);//为窗体设置menubar 展开
public class Mywork1 extends JFrame{
/**
* @param args
*/
//重写 piant
Image image1=null;
public void paint (Graphics g){
super.paint(g);
g.drawImage(image1,10,50,600,500,this);
}
public EnjoyMusic(){
//设置窗体属性
setSize(600,590);
setLocation(330,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
//this.setResizable(false);
//建立切换按钮 ,可是运行之后显示不出来,会不会和paint()有关??
JButton button1=new JButton("切换");
//button1.setSize(50,100);
this.add(button1);
button1.setLocation(250, 500);
// 建立菜单栏
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);//为窗体设置menubar 展开
4个回答
展开全部
this.setLayout(null);问题出在这行代码上,往容器里面添加组件时,必有有布局,不然系统会不知道怎么添加。
未做设置时,系统默认布局为BorderLayout,显示指定为null后,容器就没有布局了,此时往容器上添加组件都不会显示。
未做设置时,系统默认布局为BorderLayout,显示指定为null后,容器就没有布局了,此时往容器上添加组件都不会显示。
更多追问追答
追问
那要怎么办?难道要对button 来个setvisible?怎么我看书上的都不用啊都会显示的 。会不会和加的那个菜单栏有关?
追答
public class Test extends JFrame{
private ImageIcon icon = new ImageIcon(getClass().getResource("image.png"));
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(icon.getImage(), 100, 100, this);
}
public void Fun() {
setSize(500, 400);
setLayout(new FlowLayout());
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("button");
add(button);
setVisible(true);
}
public static void main(String[] args){
new Test().Fun();
}
}
把你的图片替换上,你看看吧
展开全部
继承JPanel,重写paintComponent绘制图片。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
drawImage 的时候把按钮覆盖了吧
g.drawImage(image1,10,50,600,500,this);
super.paint(g);
试试
g.drawImage(image1,10,50,600,500,this);
super.paint(g);
试试
更多追问追答
追问
没用诶。 你这只是调换了个顺序啊,你这样改是绝对错的,连图片都paint不出来了。
追答
o . 忘了,
你去掉那个drawImage 试试
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
日啊。。。
不要直接在客体里画图啊。。。
搞个容器,画在容器里。。。
不要直接在客体里画图啊。。。
搞个容器,画在容器里。。。
追问
这么说,和这个有关?但是你看看我的写的坐标什么的,根本就不会把那个给覆盖。窗口最大化了也没有button的影子。而且感觉 g.drawImage(image1,10,50,600,500,this);的绘制很奇怪 好像会自己调整尺寸 而不是完全按照你写的坐标来画
追答
调试下,看看事件先后顺序。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询