[英]JPanel not showing until JFrame is expanded
這對我來說毫無意義。 我有一個可以正常工作的登錄屏幕,該登錄屏幕是從我的主類中調用的,問題是用於容納文本區域等的JPanel直到我單擊窗口的邊緣時才會顯示(展開它)
這是我的代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SchoolSystem
{
public static void main (String [] args)
{
Login lg = new Login();
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Login extends JFrame implements ActionListener
{
JFrame frame;
JButton SUBMIT;
JPanel panel;
JLabel label1,label2;
public Menus m = new Menus();
final JTextField text1,text2;
{
frame = new JFrame("Welcome");
frame.setSize(310,110);
frame.setVisible(true);
label1 = new JLabel();
label1.setText("User ID:");
text1 = new JTextField(15);
label2 = new JLabel();
label2.setText("Password:");
text2 = new JPasswordField(15);
SUBMIT=new JButton("LOGIN");
panel=new JPanel(new GridLayout(3,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(SUBMIT);
add(panel,BorderLayout.CENTER);
SUBMIT.addActionListener(this);
text2.addActionListener(this);
setTitle("Welcome");
frame.add(panel);
}
public void actionPerformed(ActionEvent ae)
{
//Gets the text inside the User ID and Password Panels
String value1=text1.getText();
String value2=text2.getText();
//Compare text to actual ID and password, Act accordingly
//In this case show a Menu for the Head Teacher
if ((value1.equals("Admin") && value2.equals("1234"))){
m.adminMenu();
frame.setVisible(false);
}
else{
if (value1.equals("Teach") && value2.equals("0000")) {
m.teacherMenu();
frame.setVisible(false);
}
else{
JOptionPane.showMessageDialog(this,"Incorrect login or password",
"Error",JOptionPane.ERROR_MESSAGE);
}
}
}
}
frame.setVisible(true);
在所有JComponents
添加到JFrame
之后,必須是最后一個代碼行
最后的代碼行可以是frame.pack();
和frame.setVisible(true);
使用JDialog
代替JFrame
來完成這項工作,
最好的方法是使用CardLayout
(從logon panel
切換到another panel(s)
后調用JFrame.pack()
another panel(s)
)
正如其他人提到的那樣, frame.setVisible(true)
應該是代碼的最后一行。 但是,如果您希望將代碼保持原樣,則應在GUI代碼的末尾,即在初始化程序塊的右大括號之前調用frame.revalidate()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.