繁体   English   中英

按钮使用Java GUI(Swing)在鼠标上单击后会出现?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM