我正在尝试使用JFrames为不同的屏幕制作一个在仓库中使用的程序。登录屏幕完全像我编码的那样显示,失败屏幕根本不会显示,成功登录主菜单屏幕将全部3个JLabel放置在不同的行中,并将它们打印在完全相同的位置,所以您看不到它说的是什么
一开始我以为它的某些部分代码放置在错误的地方,但是在将其复制到其他地方后,没有任何变化。对于第一个屏幕,我需要在框架代码的末尾创建一个空的JLabel,它对完全相同的问题进行排序,但在主菜单屏幕上无法正常工作
public class Login {
public Login() {
JFrame login = new JFrame("RedPraire");
JFrame mmenu = new JFrame("RedPraire");
JFrame failed = new JFrame("RedPraire");
JLabel acc = new JLabel("Username:");
JLabel pass = new JLabel("Password:");
JLabel page = new JLabel("1/1");
JLabel mm1 = new JLabel("1 System Directed");
JLabel mm2 = new JLabel("2 User Directed");
JLabel mm3 = new JLabel("3 Logout");
JLabel site = new JLabel("Thorne");
JLabel info = new JLabel("RPPRODWMS (PL0236)");
JLabel title = new JLabel("Login");
JLabel titlemm = new JLabel("MainMenu");
JLabel sitemm = new JLabel("W114");
JLabel selmm = new JLabel("Selection?");
JLabel createdby = new JLabel("(c) JDA 1995-2018");
JLabel flogin = new JLabel("Invalid username or password press enter...");
JLabel x = new JLabel("");
JTextField acc1 = new JTextField("") ;
JTextField pass1 = new JTextField("");
login.setSize(600, 380);
login.setVisible(true);
login.setResizable(false);
login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
login.setLocationRelativeTo(null);
login.getContentPane().setBackground(Color.black);
failed.setSize(600, 380);
failed.setVisible(false);
failed.setLocationRelativeTo(null);
failed.setResizable(false);
failed.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
failed.getContentPane().setBackground(Color.black);
mmenu.setSize(600, 380);
mmenu.setVisible(false);
mmenu.setResizable(false);
mmenu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mmenu.setLocationRelativeTo(null);
mmenu.getContentPane().setBackground(Color.black);
title.setBounds(270, 2, 40, 20);
title.setFont(new Font("Arial", Font.BOLD, 14));
title.setForeground(Color.white);
page.setBounds(2, 2, 40, 20);
page.setFont(new Font("Arial", Font.BOLD, 14));
page.setForeground(Color.white);
info.setBounds(2, 30, 160, 20);
info.setFont(new Font("Arial", Font.BOLD, 14));
info.setForeground(Color.white);
site.setBounds(2, 50, 120, 20);
site.setFont(new Font("Arial", Font.BOLD, 14));
site.setForeground(Color.white);
acc.setBounds(2, 70, 160, 20);
acc.setFont(new Font("Arial", Font.BOLD, 14));
acc.setForeground(Color.white);
pass.setBounds(2, 90, 160, 20);
pass.setFont(new Font("Arial", Font.BOLD, 14));
pass.setForeground(Color.white);
createdby.setBounds(2, 220, 160, 20);
createdby.setFont(new Font("Arial", Font.BOLD, 14));
createdby.setForeground(Color.white);
login.add(title);
login.add(page);
login.add(site);
login.add(info);
login.add(acc);
login.add(pass);
login.add(createdby);
login.add(acc1);
login.add(pass1);
login.add(x);
acc1.setBounds(82, 70, 160, 20);
acc1.setBackground(Color.black);
acc1.setForeground(Color.white);
acc1.setCaretColor(Color.white);
acc1.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.white));
acc1.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
if(acc1.getText().equals("jud") && (pass1.getText().equals("sze"))) {
login.setVisible(false);
mmenu.setVisible(true);
selmm.setBounds(2, 220, 160, 20);
selmm.setFont(new Font("Arial", Font.BOLD, 14));
selmm.setForeground(Color.white);
mm1.setBounds(2, 70, 160, 20);
mm1.setFont(new Font("Arial", Font.BOLD, 14));
mm1.setForeground(Color.white);
mm2.setBounds(2, 90, 160, 20);
mm2.setFont(new Font("Arial", Font.BOLD, 14));
mm2.setForeground(Color.white);
mm3.setBounds(2, 110, 160, 20);
mm3.setFont(new Font("Arial", Font.BOLD, 14));
mm3.setForeground(Color.white);
titlemm.setBounds(270, 2, 40, 20);
titlemm.setFont(new Font("Arial", Font.BOLD, 14));
titlemm.setForeground(Color.white);
sitemm.setBounds(2, 50, 120, 20);
sitemm.setFont(new Font("Arial", Font.BOLD, 14));
sitemm.setForeground(Color.white);
flogin.setBounds(30, 200, 200, 20);
flogin.setFont(new Font("Arial", Font.BOLD, 14));
flogin.setForeground(Color.white);
mmenu.add(page);
mmenu.add(createdby);
mmenu.add(titlemm);
mmenu.add(sitemm);
mmenu.add(selmm);
mmenu.add(mm1);
mmenu.add(mm2);
mmenu.add(mm3);
mmenu.add(x);
} else {
login.setVisible(false);
flogin.setVisible(true);
failed.add(flogin);
failed.add(page);
failed.add(x);
}
}
}
});
pass1.setBounds(82, 90, 160, 20);
pass1.setCaretColor(Color.white);
pass1.setBackground(Color.black);
pass1.setForeground(Color.white);
pass1.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.white));;
pass1.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
if(acc1.getText().equals("jud") && (pass1.getText().equals("sze"))) {
login.setVisible(false);
mmenu.setVisible(true);
selmm.setBounds(2, 220, 160, 20);
selmm.setFont(new Font("Arial", Font.BOLD, 14));
selmm.setForeground(Color.white);
mm1.setBounds(2, 70, 160, 20);
mm1.setFont(new Font("Arial", Font.BOLD, 14));
mm1.setForeground(Color.white);
mm2.setBounds(2, 70, 160, 20);
mm2.setFont(new Font("Arial", Font.BOLD, 14));
mm2.setForeground(Color.white);
mm3.setBounds(2, 70, 160, 20);
mm3.setFont(new Font("Arial", Font.BOLD, 14));
mm3.setForeground(Color.white);
titlemm.setBounds(270, 2, 40, 20);
titlemm.setFont(new Font("Arial", Font.BOLD, 14));
titlemm.setForeground(Color.white);
sitemm.setBounds(2, 50, 120, 20);
sitemm.setFont(new Font("Arial", Font.BOLD, 14));
sitemm.setForeground(Color.white);
flogin.setBounds(30, 200, 200, 20);
flogin.setFont(new Font("Arial", Font.BOLD, 14));
flogin.setForeground(Color.white);
mmenu.add(page);
mmenu.add(createdby);
mmenu.add(titlemm);
mmenu.add(sitemm);
mmenu.add(selmm);
mmenu.add(mm1);
mmenu.add(mm2);
mmenu.add(mm3);
mmenu.add(x);
} else {
login.setVisible(false);
flogin.setVisible(true);
failed.add(flogin);
failed.add(page);
failed.add(x);
}
}
}
});
}
}
它们应该是不同的行,就像您在我的代码中看到的那样,但是在一行中它们完全是模糊的。.
答案 0 :(得分:-2)
因此,每个在几天内浏览所有论坛都想帮助我的人都非常容易找到解决方案,而又不知道它太强大了以至于无法完美使用?简单。我已经将每个帧都创建为不同的类,然后在检查密码是否正确(如果为true时)时使用了它:
login.setVisible(false);
login.dispose();
new MainMenu();
where创建具有所需属性的新框架,并且它们没有像以前那样混合在一起。下次再告诉某人不要使用某些东西(因为他们想说你还不够好)之前,只想出像安德鲁·汤普森(Andrew Thompson)尝试过的解决方案:) 谢谢