import javax.swing.*;
import java.awt.Color;
import java.awt.SystemColor;
import java.awt.Dimension;
import java.awt.Rectangle;
public class DesignerTest extends JFrame {
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JTextField jTextField1 = new JTextField();
  JLabel jLabel3 = new JLabel();
  JTextField jTextField2 = new JTextField();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();
  JLabel jLabel4 = new JLabel();
  public DesignerTest() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  public static void main(String[] args) {
    DesignerTest designerTest1 = new DesignerTest();
  }
  private void jbInit() throws Exception {
    jLabel1.setFont(new java.awt.Font("Dialog", 1, 28));
    jLabel1.setForeground(Color.red);
    jLabel1.setText("欢迎登录本网站");
    jLabel1.setBounds(new Rectangle(153, 68, 216, 45));
    this.setBackground(SystemColor.control);
    this.setFont(new java.awt.Font("Dialog", 1, 18));
    jLabel2.setFont(new java.awt.Font("Dialog", 0, 18));
    jLabel2.setForeground(Color.magenta);
    jLabel2.setOpaque(false);
    jLabel2.setRequestFocusEnabled(true);
    jLabel2.setText("用户");
    jLabel2.setBounds(new Rectangle(100, 188, 61, 26));
    jTextField1.setText("jTextField1");
    jTextField1.setBounds(new Rectangle(164, 186, 210, 32));
    jLabel3.setFont(new java.awt.Font("Dialog", 0, 18));
    jLabel3.setForeground(Color.magenta);
    jLabel3.setText("密码");
    jLabel3.setBounds(new Rectangle(105, 254, 52, 25));
    jTextField2.setText("jTextField2");
    jTextField2.setBounds(new Rectangle(166, 255, 211, 32));
    jButton1.setBounds(new Rectangle(154, 318, 87, 36));
    jButton1.setFont(new java.awt.Font("Dialog", 0, 16));
    jButton1.setMinimumSize(new Dimension(73, 25));
    jButton1.setActionCommand("");
    jButton1.setText("提交");
    jButton2.setBounds(new Rectangle(270, 318, 87, 36));
    jButton2.setFont(new java.awt.Font("Dialog", 0, 16));
    jButton2.setText("取消");
    jLabel4.setText("XXXX\u00A92000-2010版权所有");
    jLabel4.setBounds(new Rectangle(176, 384, 337, 42));
    this.getContentPane().add(jTextField2, null);
    this.getContentPane().add(jTextField1, null);
    this.getContentPane().add(jLabel2, null);
    this.getContentPane().add(jLabel3, null);
    this.getContentPane().add(jLabel1, null);
    this.getContentPane().add(jButton1, null);
    this.getContentPane().add(jButton2, null);
    this.getContentPane().add(jLabel4, null);
    setSize(600,400);
    this.show();
  }}
//帮你改了一下,改的比较多.

解决方案 »

  1.   

    请问楼上的朋友,问题主要出在哪儿?我想书上的原意是做成Package引入到其他的程序中,是不是这样?
      

  2.   

    swing的版面结构
       Swing中几乎所有组件都是从JComponent衍生而来,也就是说这些组件都是lightweight Component,均由纯java code所编写面成
    、Swing中以下几个组件不是由JComponent继承面来:
        JFrame(JRoot Pane)
        JDialog(JRoot Pane)
        JWindow(JRoot Pane)
        JApplet(JRoot Pane)
      以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件,因为要在操作系统中显示窗口画面,必
    须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此Swing中的JFrame便继承原有AWT中的Frame
    类,面不是继承JComponent类。同样,JApplet是继承原有AWT中的JApplet类,也不是继承JComponent类。
        JFrame、JDialog、JWindow及JApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能
    显示出来。此四组件均实现(Implement)RootPaneContainer这个界面(Interface),此界面定义了各种容器取得与设置并不是真实的容器,它是由Glass Pane
    与Layered Pane所组成(Layered Pane里拥有Content Pane与Menu Bar,而Menu Bar可选择使用或不使用),
    我们不能在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若要在最上层组件上加入组件,必须加在Layered Pane或是
    Layered Pane里的Content Pane上。以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton、JLabel等)必须先取得JFrame
    的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一个按钮,不
    能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中,如:
       frame.getContentPane().add(button)
    否则在编译的时候将有错误信息产生。
      

  3.   

    vgvg(巩伟),偶刚刚试了一下,还是不行,编译运行都正常,就是看不到结果。
      

  4.   

    应该是运行的时候什么都看不到
    JComponent这个东东好象show()不出来吧???
      

  5.   

    所以这样改一下也就行了
    public static void main(String[] args) {
        JFrame jf = new JFrame();
        DesignerTest  designerTest1 = new DesignerTest ();
        jf.getContentPane().add(jFrame1);
        jf.setSize(400,400);
        jf.setVisible(true);
      }
      

  6.   

    thomas_20(执子之手,与子偕老),不是很懂你的意思,请问应该怎么改呢?
      

  7.   

    就是把main 函数改成我这样就可以显示了,因为你那个DesignerTest是从JComponent继承过来的,是一个lightweight Component,就相当与一个JLabel或JButtion一样,需要一个heavyweight Component来装载它,来显示它。
      

  8.   

    不好意思刚才写错了
    public static void main(String[] args) {
        JFrame jf = new JFrame();
        DesignerTest  designerTest1 = new DesignerTest ();
        jf.getContentPane().add(designerTest1);
        jf.setSize(400,400);
        jf.setVisible(true);
      }
      

  9.   

    谢谢thomas_20(执子之手,与子偕老),有一点小错误,我改成
    public static void main(String[] args) {
        JFrame jf = new JFrame();
        DesignerTest  designerTest1 = new DesignerTest ();
        jf.getContentPane().add(designerTest1);
        jf.setSize(400,400);
        jf.setVisible(true);
      }
    原来是要用一个容器来放置组件。
      

  10.   

    import javax.swing.*;
    import java.awt.Color;
    import java.awt.SystemColor;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    public class DesignerTest extends JFrame {
      JLabel jLabel1 = new JLabel();
      JLabel jLabel2 = new JLabel();
      JTextField jTextField1 = new JTextField();
      JLabel jLabel3 = new JLabel();
      JTextField jTextField2 = new JTextField();
      JButton jButton1 = new JButton();
      JButton jButton2 = new JButton();
      JLabel jLabel4 = new JLabel();
      public DesignerTest() {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      public static void main(String[] args) {
        DesignerTest designerTest1 = new DesignerTest();
      }
      private void jbInit() throws Exception {
        
        jLabel1.setFont(new java.awt.Font("Dialog", 1, 28));
        jLabel1.setForeground(Color.red);
        jLabel1.setText("欢迎登录本网站");
        jLabel1.setBounds(new Rectangle(153, 68, 216, 45));
        this.setBackground(SystemColor.control);
        this.setFont(new java.awt.Font("Dialog", 1, 18));
        jLabel2.setFont(new java.awt.Font("Dialog", 0, 18));
        jLabel2.setForeground(Color.magenta);
        jLabel2.setOpaque(false);
        jLabel2.setRequestFocusEnabled(true);
        jLabel2.setText("用户");
        jLabel2.setBounds(new Rectangle(100, 188, 61, 26));
        jTextField1.setText("jTextField1");
        jTextField1.setBounds(new Rectangle(164, 186, 210, 32));
        jLabel3.setFont(new java.awt.Font("Dialog", 0, 18));
        jLabel3.setForeground(Color.magenta);
        jLabel3.setText("密码");
        jLabel3.setBounds(new Rectangle(105, 254, 52, 25));
        jTextField2.setText("jTextField2");
        jTextField2.setBounds(new Rectangle(166, 255, 211, 32));
        jButton1.setBounds(new Rectangle(154, 318, 87, 36));
        jButton1.setFont(new java.awt.Font("Dialog", 0, 16));
        jButton1.setMinimumSize(new Dimension(73, 25));
        jButton1.setActionCommand("");
        jButton1.setText("提交");
        jButton2.setBounds(new Rectangle(270, 318, 87, 36));
        jButton2.setFont(new java.awt.Font("Dialog", 0, 16));
        jButton2.setText("取消");
        jLabel4.setText("XXXX\u00A92000-2010版权所有");
        jLabel4.setBounds(new Rectangle(176, 384, 337, 42));
        this.getContentPane().add(jTextField2);    this.getContentPane().add(jTextField1);
        this.getContentPane().add(jLabel2);
        this.getContentPane().add(jLabel3);
        this.getContentPane().add(jLabel1);
        this.getContentPane().add(jButton1);
        this.getContentPane().add(jButton2);
        this.getContentPane().add(jLabel4);
        //this.getContentPane().setVisible(true);
        this.setBounds(10,10,800,600);
        this.setVisible(true);
      }}