为什么我的 JLabel 以完全相同的方式打印出来 space?
Why my JLabels print out in same exact space?
我正在尝试使用 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);
}
}
}
});
}
}
正如您在我的代码中看到的那样,它们应该是不同的行,但它们在一行中完全模糊了..
所有在所有论坛上搜索了几天后试图帮助我的人都知道,解决方案非常简单,不用说这太强大了,无法使用它如何完美运行?简单的。我已经将每一帧创建为不同 class 然后当它检查密码是否正确时我使用了这个:
login.setVisible(false);
login.dispose();
new MainMenu();
在哪里创建具有所需属性的新框架,并且它们不会像以前那样混合在一起。下次在告诉某人不要使用某些东西之前(因为他们想说你不够好)只是想出像安德鲁汤普森那样的解决方案:)
谢谢
我正在尝试使用 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);
}
}
}
});
}
}
正如您在我的代码中看到的那样,它们应该是不同的行,但它们在一行中完全模糊了..
所有在所有论坛上搜索了几天后试图帮助我的人都知道,解决方案非常简单,不用说这太强大了,无法使用它如何完美运行?简单的。我已经将每一帧创建为不同 class 然后当它检查密码是否正确时我使用了这个:
login.setVisible(false);
login.dispose();
new MainMenu();
在哪里创建具有所需属性的新框架,并且它们不会像以前那样混合在一起。下次在告诉某人不要使用某些东西之前(因为他们想说你不够好)只是想出像安德鲁汤普森那样的解决方案:) 谢谢