各位大侠:
  我写的代码,想吧标签添加到窗口里面,可是怎么就加不进去呢?
package com.frame;
import java.awt.*;
import javax.swing.*;public class explame extends JFrame{
public void CreateJFrame(String title)
{
JFrame jf=new JFrame(title);
Container c=jf.getContentPane();
JLabel jl=new JLabel("hello java");
jl.setVisible(true);
jl.setBackground(Color.red);
jl.setHorizontalAlignment(SwingConstants.CENTER);

c.add(jl);
//
c.add(new JButton("test"));
jf.setBackground(Color.red);
jf.setVisible(true);
jf.setSize(400,300);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);



} /**
 * @param args
 */
public static void main(String[] args) {

// TODO 自动生成方法存根
new explame().CreateJFrame("hello java !"); }}

解决方案 »

  1.   

    jf.setSize(400,300);
    jf.setVisible(true);
    把你程序里的setSize和setVisible方法换一下顺序就可以了
    另外看你的程序别扭的很,重写一下
    import java.awt.*;import javax.swing.*;public class explame extends JFrame {
    public void CreateJFrame(String title) {
    JFrame jf = new JFrame(title);
    JLabel jl = new JLabel("hello java");
    jf.add(jl, BorderLayout.NORTH);
    jf.add(new JButton("test"), BorderLayout.CENTER);
    jf.setSize(400, 300);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    } public static void main(String[] args) {
    new explame().CreateJFrame("hello java !");
    }
    }
      

  2.   

    还有一个问题,你的程序里布局有问题,label和button得位置重复了
      

  3.   

    为什么换下位置就可以了呢?我是初学者,还有,书上说嘛JFrame的对象先转换成容器才可以add东西啊
      

  4.   

    不换位置,你要把frame最大化一下才能刷出来那些组件,写gui的时候要注意把setVisible设置组件代码的最后面,不然会有显示的问题
    JFrame就是一个顶层的容器,什么叫JFrame转化成容器啊,你看的什么书啊...
      

  5.   

    你有QQ没啊?方便的话快要给我嘛,交流哈,或者好的QQ群