![](/img/trans.png)
[英]Java Swing - GUI freezes when completing calculations after clicking a button
[英]Button Coming after taking mouse on it in Java GUI (Swing)?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class null_login_type extends JFrame{
private JLabel admin_password_label,heading,login_label,password_label,id_label;
private JButton user_login_button,admin_login_button,enquiry_button,logins1,signup;
private JTextField user_field,password_field,admin_field,admin_password_field;
private ButtonGroup bg;
null_login_type()
{
this.setLayout(null);
user_login_button = new JButton("Login as User");
logins1 = new JButton("Login");
user_field = new JTextField("User_field");
id_label = new JLabel("Id_label");
user_login_button.setBounds(0,100, 150, 30);
logins1.setBounds(250,200,100,30);
user_field.setBounds(200,60,150,30);
add(user_login_button);
event e = new event();
user_login_button.addActionListener(e);
}
public class event implements ActionListener
{
public void actionPerformed(ActionEvent e){
logins1.setBounds(250,60,150,30);;
// user_field.setBounds(250,60,150,30);;
// add(user_field);
add(logins1);
logins1.setVisible(true);
}
}
public static void main(String args[])
{
null_login_type gui = new null_login_type();
gui.setSize(420,300);
gui.setLocation(530,200);
gui.setVisible(true);
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);;
}
}
否则按钮不可见。 当我将鼠标放在logins1区域上时,该按钮就会出现,然后就在那里。
如果我在动作侦听器中添加了注释部分,并在动作侦听器中删除了logins1,则即使不使用鼠标,也会输出输出。
如果您修改某些内容,则需要调用repaint()
和revalidate()
,请参见下文。 您还需要在EDT中创建GUI,并在JFrame
使用Panel
(总是比依赖默认值更好):
import java.awt.event.*;
public class null_login_type extends JFrame{
private JLabel admin_password_label,heading,login_label,password_label,id_label;
private JButton user_login_button,admin_login_button,enquiry_button,logins1,signup;
private JTextField user_field,password_field,admin_field,admin_password_field;
private ButtonGroup bg;
private JPanel panel;
null_login_type()
{
panel = new JPanel();
this.setContentPane(panel);
this.setLayout(null);
user_login_button = new JButton("Login as User");
logins1 = new JButton("Login");
user_field = new JTextField("User_field");
id_label = new JLabel("Id_label");
user_login_button.setBounds(0,100, 150, 30);
logins1.setBounds(250,200,100,30);
user_field.setBounds(200,60,150,30);
panel.add(user_login_button);
event e = new event();
user_login_button.addActionListener(e);
}
public class event implements ActionListener
{
public void actionPerformed(ActionEvent e){
logins1.setBounds(250,60,150,30);;
// user_field.setBounds(250,60,150,30);;
// add(user_field);
panel.add(logins1);
panel.repaint();
panel.revalidate();
}
}
public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
null_login_type gui = new null_login_type();
gui.setSize(420,300);
gui.setLocation(530,200);
gui.setVisible(true);
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);;
}
});
}
}
也请使用标准约定来命名您的类,即NullLoginType
。 不要调用您的内部类event
,存在一个Event
类,选择更合适的东西,它不代表事件,而是事件处理程序...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.