我知道我没有框架,但除了我的JPasswordField
(密码栏)和我的JTextField
(用户名栏)之外,所有内容都显示我只是想添加“用户名”和“密码“页面底部的栏,但栏不会显示。
感谢您的帮助,尽管看起来这里的所有内容都是负片。洛尔。
public class test extends JFrame {
private JLabel jl;
private JLabel paypalLogo;
private JButton money1;
private JButton money2;
private JButton money3;
private JButton money4;
private JButton money5;
private JButton money6;
private JButton custom;
private JTextField user;
private JButton login;
private JPasswordField pass;
public test(){
super("PayPal Money Generator");
setLayout(new FlowLayout());
this.setLayout(null);
Icon logo1 = new ImageIcon(getClass().getResource("res/paypal.png"));
paypalLogo = new JLabel(logo1);
paypalLogo.setBounds(50,-50,200,200);
add(paypalLogo);
money1 = new JButton("$5");
money1.setBounds(85,100,35,35);
add(money1);
money2 = new JButton("$10");
money2.setBounds(200,100,35,35);
add(money2);
money3 = new JButton("$25");
money3.setBounds(67,200,50,35);
add(money3);
money4 = new JButton("$50");
money4.setBounds(200,200,50,35);
add(money4);
money5 = new JButton("$200");
money5.setBounds(50,300,70,40);
add(money5);
money6 = new JButton("$500");
money6.setBounds(200,300,70,40);
add(money6);
user = new JTextField(15);
add(user);
pass = new JPasswordField(15);
add(pass);
login = new JButton("Login");
add(login);
/*how to make logo in button test
Icon b = new ImageIcon(getClass().getResource("res/paypal.png"));
custom = new JButton("", b);
custom.setBounds(10,10,100,100);
add(custom);
*/
HandlerClass handler = new HandlerClass();
money1.addActionListener(handler);
money2.addActionListener(handler);
money3.addActionListener(handler);
money4.addActionListener(handler);
money5.addActionListener(handler);
money6.addActionListener(handler);
}
public class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(user.getText().trim().length() == 0 || pass.getText().length() == 0){
JOptionPane.showMessageDialog(null, "Fill");
}else{
if(user.getText().equals("Kleo") || user.getText().equals("Kleo")){
JOptionPane.showMessageDialog(null, "Welcome");
}else{
JOptionPane.showMessageDialog(null, "Denied");
}
}
}
}
private class HandlerClass implements ActionListener{
public void actionPerformed(ActionEvent e){
try {
final ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResource("/res/paypal.png")));
JOptionPane.showOptionDialog(
null,
e.getActionCommand() + ".00 USD has successfully been added to your account!",
"",
JOptionPane.OK_OPTION,
JOptionPane.PLAIN_MESSAGE,
icon,
new Object[]{"OK"},
"");
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
}
答案 0 :(得分:4)
当您使用null布局时,程序员完全负责设置添加到容器的组件的所有位置和大小。您不要为JTextField或JPasswordField设置其中任何一个。快速( 和错误的 )解决方案是设置其边界。更好的解决方案是使用布局管理器。
答案 1 :(得分:4)
使用null
布局是导致问题的主要原因......
this.setLayout(null);
//...
user = new JTextField(15);
add(user);
pass = new JPasswordField(15);
add(pass);
login = new JButton("Login");
add(login);
基本上,在创建组件时,它的默认大小和位置为0x0
,这意味着,基于上面的代码,您的组件不可见,因为它们没有大小。< / p>
Swing旨在与布局管理器一起使用,并且有很多充分的理由使用它们。您无法控制将内容呈现到屏幕的呈现过程,这将影响字体度量等内容,这将改变组件所需的大小并影响组件彼此的放置......
简短回答,使用适当的布局管理器
有关详细信息,请参阅Laying Out Components Within a Container
在处理这种形式的表格时,你很难找到一位有经验的Swing开发人员,他们会主张使用null
布局。