2015-09-02 137 views
0

当我在Netbeans中运行它时,btn3没有显示。 当我在记事本中运行它时,它显示第三个按钮。 我真的不知道问题是什么。按钮不显示在Jframe

import javax.swing.*; 

import java.awt.*; 

import java.awt.event.*; 

public class Regform2 extends JFrame implements ActionListener { 

    JLabel l1, l2, l3, l4, l5, l6, l7, l8; 
    JTextField tf1, tf2, tf5, tf6, tf7; 
    JButton btn1, btn2, btn3; 
    JPasswordField p1, p2; 

    Regform2() { 

     setTitle("Registration Form in Java"); 

     l1 = new JLabel("Registration Form in Windows Form:"); 
     l1.setForeground(Color.blue); 
     l1.setFont(new Font("Serif", Font.BOLD, 20)); 

     l2 = new JLabel("Name:"); 
     l3 = new JLabel("Email-ID:"); 
     l4 = new JLabel("Create Passowrd:"); 
     l5 = new JLabel("Confirm Password:"); 
     l6 = new JLabel("Country:"); 
     l7 = new JLabel("State:"); 
     l8 = new JLabel("Phone No:"); 
     tf1 = new JTextField(); 
     tf2 = new JTextField(); 
     p1 = new JPasswordField(); 
     p2 = new JPasswordField(); 
     tf5 = new JTextField(); 
     tf6 = new JTextField(); 
     tf7 = new JTextField(); 

     btn1 = new JButton("Submit"); 
     btn2 = new JButton("Clear"); 
     btn3 = new JButton("nxt"); 

     btn1.addActionListener(this); 
     btn2.addActionListener(this); 
     btn3.addActionListener(this); 

     l1.setBounds(100, 30, 400, 30); 
     l2.setBounds(80, 70, 200, 30); 
     l3.setBounds(80, 110, 200, 30); 
     l4.setBounds(80, 150, 200, 30); 
     l5.setBounds(80, 190, 200, 30); 
     l6.setBounds(80, 230, 200, 30); 
     l7.setBounds(80, 270, 200, 30); 
     l8.setBounds(80, 310, 200, 30); 
     tf1.setBounds(300, 70, 200, 30); 
     tf2.setBounds(300, 110, 200, 30); 
     p1.setBounds(300, 150, 200, 30); 
     p2.setBounds(300, 190, 200, 30); 
     tf5.setBounds(300, 230, 200, 30); 
     tf6.setBounds(300, 270, 200, 30); 
     tf7.setBounds(300, 310, 200, 30); 
     btn1.setBounds(50, 350, 100, 30); 
     btn2.setBounds(170, 350, 100, 30); 
     btn3.setBounds(300, 350, 100, 30); 
     add(l1); 
     add(l2); 
     add(tf1); 
     add(l3); 
     add(tf2); 
     add(l4); 
     add(p1); 
     add(l5); 
     add(p2); 
     add(l6); 
     add(tf5); 
     add(l7); 
     add(tf6); 
     add(l8); 
     add(tf7); 
     add(btn1); 
     add(btn2); 
     add(btn3); 
     setVisible(true); 
     setSize(700, 700); 
     setLayout(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == btn1) { 
      int x = 0; 
      String s1 = tf1.getText(); 
      String s2 = tf2.getText(); 

      char[] s3 = p1.getPassword(); 
      char[] s4 = p2.getPassword(); 
      String s8 = new String(s3); 
      String s9 = new String(s4); 

      String s5 = tf5.getText(); 
      String s6 = tf6.getText(); 
      String s7 = tf7.getText(); 
      if (s8.equals(s9)) { 
       JOptionPane.showMessageDialog(btn1, "Data Saved Successfully"); 
      } else { 
       JOptionPane.showMessageDialog(btn1, "Password Does Not Match"); 
      } 



     } else if (e.getSource() == btn2) { 
      tf1.setText(""); 
      tf2.setText(""); 
      p1.setText(""); 
      p2.setText(""); 
      tf5.setText(""); 
      tf6.setText(""); 
      tf7.setText(""); 


     } else { 

      this.dispose(); 
      NewJFrame nw = new NewJFrame(); 
      nw.setVisible(true); 


     } 
    } 

    public static void main(String args[]) { 
     new Regform2(); 
    }} 
+2

你是空的布局不会帮助。在框架变得可见并且调用了setLayout之后,容器Amy被验证并且组件被布置,这可能与您试图在没有它的情况下搞砸。 – MadProgrammer

+0

您不应'setLayout(null)',而是'LayoutManager' ,在使'JFrame'可见之前,添加到'getContentPane()'并调用'pack'。 –

+2

'setLayout(null);'这就是问题所在。 Java GUI必须在不同的语言环境中使用不同的PLAF来处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –

回答

0

如果您先将setlayout(null)置于setVisible(true),则btn3将显示在jframe中。像这样:

setLayout(null); 
    setVisible(true); 
    setSize(700, 700); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
0

您需要添加一个JPanel。在此面板中添加组件。 不要忘记您的面板添加到您的框架是这样的:

JPanel contentPane = new JPanel(); 
    content.add(new JButton("Test")); 

    this.setDefaultCloseOperation(3); 
    this.setContentPane(contentPanel); 
    this.setSize(Width, Height); 
    this.setResizable(false); 
    this.setVisible(true); 
0

这段代码工作...请定义主框架的代码在 构造的开始,如 setTitle(); setSize(); setLayout();

import javax.swing.*; 

import java.awt.*; 

import java.awt.event.*; 

public class Regform2 extends JFrame implements ActionListener { 

JLabel l1, l2, l3, l4, l5, l6, l7, l8; 
JTextField tf1, tf2, tf5, tf6, tf7; 
JButton btn1, btn2, btn3; 
JPasswordField p1, p2; 

Regform2() { 

    setTitle("Registration Form in Java"); 
    setSize(700, 700); 
    setLayout(null); 

    l1 = new JLabel("Registration Form in Windows Form:"); 
    l1.setForeground(Color.blue); 
    l1.setFont(new Font("Serif", Font.BOLD, 20)); 

    l2 = new JLabel("Name:"); 
    l3 = new JLabel("Email-ID:"); 
    l4 = new JLabel("Create Passowrd:"); 
    l5 = new JLabel("Confirm Password:"); 
    l6 = new JLabel("Country:"); 
    l7 = new JLabel("State:"); 
    l8 = new JLabel("Phone No:"); 
    tf1 = new JTextField(); 
    tf2 = new JTextField(); 
    p1 = new JPasswordField(); 
    p2 = new JPasswordField(); 
    tf5 = new JTextField(); 
    tf6 = new JTextField(); 
    tf7 = new JTextField(); 

    btn1 = new JButton("Submit"); 
    btn2 = new JButton("Clear"); 
    btn3 = new JButton("Next"); 

    btn1.addActionListener(this); 
    btn2.addActionListener(this); 
    btn3.addActionListener(this); 

    l1.setBounds(100, 30, 400, 30); 
    l2.setBounds(80, 70, 200, 30); 
    l3.setBounds(80, 110, 200, 30); 
    l4.setBounds(80, 150, 200, 30); 
    l5.setBounds(80, 190, 200, 30); 
    l6.setBounds(80, 230, 200, 30); 
    l7.setBounds(80, 270, 200, 30); 
    l8.setBounds(80, 310, 200, 30); 
    tf1.setBounds(300, 70, 200, 30); 
    tf2.setBounds(300, 110, 200, 30); 
    p1.setBounds(300, 150, 200, 30); 
    p2.setBounds(300, 190, 200, 30); 
    tf5.setBounds(300, 230, 200, 30); 
    tf6.setBounds(300, 270, 200, 30); 
    tf7.setBounds(300, 310, 200, 30); 
    btn1.setBounds(50, 350, 100, 30); 
    btn2.setBounds(170, 350, 100, 30); 
    btn3.setBounds(290, 350, 100, 30); 
    add(l1); 
    add(l2); 
    add(tf1); 
    add(l3); 
    add(tf2); 
    add(l4); 
    add(p1); 
    add(l5); 
    add(p2); 
    add(l6); 
    add(tf5); 
    add(l7); 
    add(tf6); 
    add(l8); 
    add(tf7); 
    add(btn1); 
    add(btn2); 
    add(btn3); 
    setVisible(true); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == btn1) { 
     int x = 0; 
     String s1 = tf1.getText(); 
     String s2 = tf2.getText(); 

     char[] s3 = p1.getPassword(); 
     char[] s4 = p2.getPassword(); 
     String s8 = new String(s3); 
     String s9 = new String(s4); 

     String s5 = tf5.getText(); 
     String s6 = tf6.getText(); 
     String s7 = tf7.getText(); 
     if (s8.equals(s9)) { 
      JOptionPane.showMessageDialog(btn1, "Data Saved Successfully"); 
     } else { 
      JOptionPane.showMessageDialog(btn1, "Password Does Not Match"); 
     } 



    } else if (e.getSource() == btn2) { 
     tf1.setText(""); 
     tf2.setText(""); 
     p1.setText(""); 
     p2.setText(""); 
     tf5.setText(""); 
     tf6.setText(""); 
     tf7.setText(""); 


    } else { 

     this.dispose(); 
     //NewJFrame nw = new NewJFrame(); 
     //nw.setVisible(true); 


    } 
} 

public static void main(String args[]) { 
    new Regform2(); 
} 

}