I experimented with creating a GUI in java, and not just using "static" all the time, and came across the SwingUtilities.invokeLater () method. I manage to configure all the settings, but when it comes to launching the application, nothing appears on JPanel until I resize the window. Is there a fix for this, or am I doing it wrong?
Here is my code:
public class main extends JPanel implements ActionListener{ public JLabel userLabel; public JLabel passLabel; public JTextField userField; public JTextField passField; public JButton login; public JButton closeLogin; public JButton help; public main(){ userLabel = new JLabel("Username: "); passLabel = new JLabel("Password: "); userField = new JTextField(16); passField = new JTextField(16); login = new JButton("Login"); login.setActionCommand("login"); login.setMnemonic(KeyEvent.VK_L); closeLogin = new JButton("Close"); closeLogin.setActionCommand("closeLogin"); closeLogin.setMnemonic(KeyEvent.VK_E); help = new JButton("Help"); help.setActionCommand("helpLogin"); help.setMnemonic(KeyEvent.VK_H); login.addActionListener(this); closeLogin.addActionListener(this); help.addActionListener(this); add(userLabel); add(userField); add(passLabel); add(passField); add(login); add(help); add(closeLogin); } public void actionPerformed(ActionEvent e){ } public static void initComponents(){ JFrame loginFrame = new JFrame("Encrypted Chat - Login"); loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); main loginPanel = new main(); loginPanel.setLayout(new FlowLayout()); loginFrame.setSize(300, 125); loginFrame.setResizable(false); loginFrame.setVisible(true); } public static void main(String args[]){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ initComponents(); } }); }
}
EDIT: I know the password JTextField is for JPasswordField .. so ignore it: P
source share