Java 按钮未显示在Jframe中
当我在Netbeans中运行btn3时,它没有显示。 当我在记事本中运行它时,它显示第三个按钮。 我真的不知道问题出在哪里Java 按钮未显示在Jframe中,java,swing,jframe,layout-manager,null-layout-manager,Java,Swing,Jframe,Layout Manager,Null Layout Manager,当我在Netbeans中运行btn3时,它没有显示。 当我在记事本中运行它时,它显示第三个按钮。 我真的不知道问题出在哪里 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; JTextF
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();
}}
如果首先放置setlayout(null),然后放置setVisible(true),btn3将显示在jframe中。像这样:
setLayout(null);
setVisible(true);
setSize(700, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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);
您需要添加一个JPanel。向该面板添加组件。 不要忘记将面板添加到框架中,如下所示:
setLayout(null);
setVisible(true);
setSize(700, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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);
此代码将工作。。。请在开始时定义主机架的代码 构造函数,例如
setTitle();
设置大小();
setLayout()代码>
}你是空的,布局没有任何帮助。在框架变得可见和y调用setLayout之间,将验证容器和布局组件,这可能与您尝试不使用它的操作有关您不应该setLayout(null)
,而是LayoutManager
,添加到getContentPane()
并在使JFrame
可见之前调用pack
。setLayout(null)代码>这就是问题所在。Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。使用布局管理器,或者与布局填充和边框一起使用。JPasswordField返回字符数组有一个(非常好的)原因,我会对它进行一些调查,以及如何使用它来发挥优势…您的示例没有编译NewJFrame
未知。请编辑。