1:
      import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;class CreatJF07 extends JFrame implements ActionListener {
JTextField jt;
JPasswordField jpw; CreatJF07() {
super("登陆窗口");
setSize(200, 200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jp = new JPanel();
jpw = new JPasswordField(10);
jpw.setEchoChar('*');
jt = new JTextField(10);
jp.add(jt);
jp.add(jpw);
add(jp);
jpw.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == jpw) {
char c[] = jpw.getPassword();
String s = new String(c);
jt.setText(s);
}
}
}public class SwingDemo07 { public static void main(String args[]) {
CreatJF07 jf = new CreatJF07(); }
}
为什么有时候 JPasswordField域和JTextField 域会不显示,把窗口拖大一点就显示了? 2:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;class CreatJF08 extends JFrame implements ActionListener {

JLabel jl1, jl2, jl3;
JTextField jt1, jt2, jt3;
JButton jb1, jb2, jb3, jb4;
CreatJF08() {
super("计算器");
setSize(200, 200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jp = new JPanel();
jl1=new JLabel("数值1");
jl2=new JLabel("数值2");
jl3=new JLabel("计算结果:");

jt1 = new JTextField(10);   
jt2 = new JTextField(10);   
jt3 = new JTextField(10);   
jt3.setEditable(false);
     
jb1=new JButton("+");
jb1=new JButton("-");
jb1=new JButton("*");
jb1=new JButton("/"); jp.add(jt1);
jp.add(jt2);
jp.add(jt3);

jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
add(jp);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this); } public void actionPerformed(ActionEvent e) {
                                    

}
}public class SwingDemo08 { public static void main(String args[]) {
CreatJF08 jf=new CreatJF08();  }
}  main 里面空指向异常,面板里面不显示,不知道为什么

解决方案 »

  1.   

    都是没有加setSize和setVisible方法导致的 
      

  2.   

    CreatJF07() {
            super("登陆窗口");        JPanel jp = new JPanel();
            jpw = new JPasswordField(10);
            jpw.setEchoChar('*');
            jt = new JTextField(10);
            jp.add(jt);
            jp.add(jpw);
            add(jp);
            jpw.addActionListener(this);
            
            setSize(200, 200);  //把这三句移到下面来 
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
      

  3.   

    setSize(200, 200);
            setVisible(true);加了啊
      

  4.   

    还有 你的组件都能添加成功  但是没有布局管理器 所以显示下过很差  而且 你第二段代码里的JLabel都没有添加到JPanel中去CreatJF08() {
            super("计算器");            JPanel jp = new JPanel();
            jl1=new JLabel("数值1");
            jl2=new JLabel("数值2");
            jl3=new JLabel("计算结果:");
            
            jt1 = new JTextField(10);   
            jt2 = new JTextField(10);   
            jt3 = new JTextField(10);   
            jt3.setEditable(false);
            
            jp.add(jt1);
            jp.add(jt2);
            jp.add(jt3);
         
            jb1=new JButton("+");
            jb2=new JButton("-");
            jb3=new JButton("*");
            jb4=new JButton("/");
            
            jb1.addActionListener(this);//你打错了 jb2和jb3没定义
            jb2.addActionListener(this);
            jb3.addActionListener(this);
            
            jp.add(jb1);
            jp.add(jb2);
            jp.add(jb3);
            
            add(jp);
            setSize(200, 200);//同样需要移下来
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }
      

  5.   

    把第二段改好了 也没加布局管理器 但是还能凑合看吧:
    import java.awt.event.*;
    import javax.swing.*;class CreatJF08 extends JFrame implements ActionListener {
        
        JLabel jl1, jl2, jl3;
        JTextField jt1, jt2, jt3;
        JButton jb1, jb2, jb3, jb4;
        
        CreatJF08() {
            super("计算器");            JPanel jp = new JPanel();
            jl1=new JLabel("数值1");
            jl2=new JLabel("数值2");
            jl3=new JLabel("计算结果:");
            
            jt1 = new JTextField(10);   
            jt2 = new JTextField(10);   
            jt3 = new JTextField(7);   
            jt3.setEditable(false);
            
            jp.add(jl1);
            jp.add(jt1);
            jp.add(jl2);
            jp.add(jt2);
            jp.add(jl3);
            jp.add(jt3);
         
            jb1=new JButton("+");
            jb2=new JButton("-");
            jb3=new JButton("*");
            jb4=new JButton("/");
            
            jb1.addActionListener(this);
            jb2.addActionListener(this);
            jb3.addActionListener(this);
            jb4.addActionListener(this);
            
            jp.add(jb1);
            jp.add(jb2);
            jp.add(jb3);
            jp.add(jb4);
            
            add(jp);
            setSize(200, 200);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }    public void actionPerformed(ActionEvent e) {
                                        
        
            }
    }public class STest {    public static void main(String args[]) {
            CreatJF08 jf = new CreatJF08();     }
    }
    结果:
      

  6.   

    第一个问题:设置一下jframe的初始大小就可以显示了
    比如 jf.setSize(300, 200);