组件的小问题~ 可以在JLabel上add( JButton )吗? 我在写扫雷,发现JLabel与JButton不能够覆盖在一起,(因为我的思路是在JLabel上显示雷数,再盖上JButton供用户点击),它们只能够并排显示,我想用画数字的方法,却发现画出来的数字老是会显示在JButton 上,我应该怎么做呢?还有除了JLabel能载入图片,还有什么方法能载入图片(或是说什么容器). 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那你怎么不直接把JButton的标题设置为JLabel上的内容呢?你写一个类,让它继承JLabel,再覆盖paint方法,就可以载入图片希望对lz有用! public static void main(String[] args){ JFrame jf=new JFrame(); jf.setSize(300, 400); JLabel jl=new JLabel(""); jl.setText(" 雷区 "); JButton jb=new JButton("扫雷"); jb.setBackground(Color.green); jl.setLayout(new BorderLayout()); jl.add(jb,BorderLayout.EAST); jf.setLayout(new FlowLayout()); jf.add(jl); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } 楼主可以new一个容器,给容器设置一个合适的布局管理器就行了,然后将Jlabel和JButton 都放到容器中。 JFrame jFrame = new JFrame(); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); { JPanel jPanel = new JPanel(); JLabel jLabel = new JLabel("雷数量"); //$NON-NLS-1$ JButton jButton = new JButton("扫雷"); //$NON-NLS-1$ jPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); jPanel.add(jLabel); jPanel.add(jButton); jFrame.add(jPanel); } jFrame.pack(); jFrame.setVisible(true); }至于载入图片,你可以使用Toolkit.getDefaultToolkit().getImage(filename)ImageIO.read(input)new ImageIcon(...).getImage()推荐你使用后边2中,因为第一种加载的图片还需要其他处理才能画出来(其实第一种图片数据还没生成...)。可以用来显示图片的控件有JLabel,JButton及其子类。还有楼主可以自己从写paint方法,自己绘制图片Graphics.drawImage(....)希望上面的信息对楼主有用~~ JLabel上虽然不能添加ActionListener,但是可以添加MouseListener,不需要添加JButton的 4楼的方法我试过了,但是效果完全不同,就是标签和按钮会并排显示,就变成了点击按钮,图片却在按钮右边显示了.不过我用得的是GridLayout 楼的答案是正解! 谢谢啦~~在JLabel上覆盖上按钮,要先设置JLabel为BorderLayout然后再add(JButton,BorderLayout.CENTER)就行了. 请教各位大侠,set get方法的作用. 异常处理 ECLIPSE下JBOSS启动问题 请问如何让JFrame出现的时候最大化? 关于剪贴板的小问题 高分在线等结帐 为何我在一个JPanel中加入一个JPanel后第一个JPanel的宽度就变大了 文件操作问题!【求助】 要死人了!!!!!求求各位大虾指点指点啊!!!!!!!! 菜鸟求教,JDK和JBUILDER有何具体的区别? 大家都在学java,那么学java到底可以做什么? 请教,如何指定集合的排序方法? java 读取含有分隔符的TXT文件
你写一个类,让它继承JLabel,再覆盖paint方法,就可以载入图片
希望对lz有用!
public static void main(String[] args){
JFrame jf=new JFrame();
jf.setSize(300, 400);
JLabel jl=new JLabel("");
jl.setText(" 雷区 ");
JButton jb=new JButton("扫雷");
jb.setBackground(Color.green);
jl.setLayout(new BorderLayout());
jl.add(jb,BorderLayout.EAST);
jf.setLayout(new FlowLayout());
jf.add(jl);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); {
JPanel jPanel = new JPanel();
JLabel jLabel = new JLabel("雷数量"); //$NON-NLS-1$
JButton jButton = new JButton("扫雷"); //$NON-NLS-1$
jPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); jPanel.add(jLabel);
jPanel.add(jButton);
jFrame.add(jPanel);
}
jFrame.pack();
jFrame.setVisible(true); }至于载入图片,你可以使用
Toolkit.getDefaultToolkit().getImage(filename)
ImageIO.read(input)new ImageIcon(...).getImage()推荐你使用后边2中,因为第一种加载的图片还需要其他处理才能画出来(其实第一种图片数据还没生成...)。可以用来显示图片的控件有JLabel,
JButton及其子类。
还有楼主可以自己从写paint方法,自己绘制图片
Graphics.drawImage(....)
希望上面的信息对楼主有用~~
在JLabel上覆盖上按钮,要先设置JLabel为BorderLayout
然后再add(JButton,BorderLayout.CENTER)就行了.