可以在JLabel上add( JButton )吗? 我在写扫雷,发现JLabel与JButton不能够覆盖在一起,(因为我的思路是在JLabel上显示雷数,再盖上JButton供用户点击),它们只能够并排显示,我想用画数字的方法,却发现画出来的数字老是会显示在JButton 上,我应该怎么做呢?还有除了JLabel能载入图片,还有什么方法能载入图片(或是说什么容器).

解决方案 »

  1.   

    那你怎么不直接把JButton的标题设置为JLabel上的内容呢?
    你写一个类,让它继承JLabel,再覆盖paint方法,就可以载入图片
    希望对lz有用!
      

  2.   


    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);
    }
      

  3.   

    楼主可以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(....)
    希望上面的信息对楼主有用~~
      

  4.   

    JLabel上虽然不能添加ActionListener,但是可以添加MouseListener,不需要添加JButton的
      

  5.   

    4楼的方法我试过了,但是效果完全不同,就是标签和按钮会并排显示,就变成了点击按钮,图片却在按钮右边显示了.不过我用得的是GridLayout
      

  6.   

    楼的答案是正解! 谢谢啦~~
    在JLabel上覆盖上按钮,要先设置JLabel为BorderLayout
    然后再add(JButton,BorderLayout.CENTER)就行了.