有个问题想问一下大家..关于java Swing的几个问题
public class GameWindow{
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setUndecorated(true);  //去掉窗体装饰
jFrame.setSize(300, 200);
jFrame.setLocation(300, 200);

JPanel jPanel = new JPanel();
jPanel.setBackground(Color.BLUE);

JButton jLabel = new JButton();
jLabel.setBackground(Color.CYAN);

jPanel.add(jLabel);
jFrame.add(jPanel);
jFrame.setVisible(true);
}
}最近我在写个窗体,也是刚学到Swing这块吧,学艺不精,但是想通过小的项目提升下自己,我要实现的窗体要求标题栏都要进行美化,并且用自己的关闭按钮和最小化按钮,所以我只能把窗体装饰去了..然后自己写事件进行响应
我在Frame里面放了Panel,然后想在Panel里面放一个Label标签当做标题栏,并且对其进行鼠标响应..但是问题就出来了..Label标签竟然不能设置背景色..要是把Label改成Button就可以了..但是这个就要用Label实现啊..我就很郁闷了..希望大家解答下为什么定义jLabel为JLabel类就不行,而定义为JButton就可以..还有一事相求..为什么我显示的Button就位于窗体中上方一丁点儿呢..我设置size也不管用..求救啊...

解决方案 »

  1.   

    JLabel是可以设置背景颜色的,前提是得用上setOpaque(true),因为默认的是false,也就是说,JLabel默认的背景颜色是透明的,走光的 :D给你来个性感的火红色JLabel label = new JLabel("Sexy");
    label.setForeground(Color.blue);
    label.setBackground(Color.red);
    label.setOpaque(true);当然估计很难看...至于说到button的位置,lz先要自学一下swing的布局管理器,一共八种,是swing里设置内部控件布局的类。默认的(也就是你的代码中没做特别声明的)是FlowLayout。不过这个讲起来就话长了...先找点资料看看比较好...另外提醒LZ
    JButton jLabel = new JButton();
    这种命名方式不太好,在你调用jLabel时会造成误解以为是JLabel对象。最好什么类型就给什么名字。
    衣服混搭可能很漂亮,代码混搭可就比较抓狂了...
      

  2.   


    import java.awt.*;
    import javax.swing.*;public class GameWindow{
        public static void main(String[] args) {
            JFrame jFrame = new JFrame();
            jFrame.setUndecorated(true);  //去掉窗体装饰
             jFrame.setSize(300, 200);
            jFrame.setLocation(300, 200);
            
            JPanel jPanel = new JPanel();
            jPanel.setBackground(Color.BLUE);
            
            JLabel jLabel = new JLabel();
            jLabel.setBounds(0, 0, 300, 28);
            jLabel.setBackground(Color.CYAN);
            jLabel.setOpaque(true);//不透明     
       
            jPanel.add(jLabel);
            jPanel.setLayout(null);//取消布局
            jFrame.add(jPanel,BorderLayout.CENTER);//居中铺满,也可以取消布局,用上面setBounds的方式设置固定大小。
            jFrame.setVisible(true);
        }
    }
      

  3.   

    Jpanel默认为流布局方式,你把布局方式设为null,再设置大小,位置应该就可以了。
    多看看API吧。
      

  4.   

    Jpanel默认为流布局方式,你把布局方式设为null,再设置大小,位置应该就可以了。
    多看看文档吧。
      

  5.   

    Jpanel默认为流布局方式,你把布局方式设为null,再设置大小,位置应该就可以了。
    多看看文档吧。