[英]inheriting a JFrame from another class using actionlistener
一旦在第一个 JFrame 上按下按钮,我正在尝试使用继承从另一个 class 中提取 JFrame。 我不确定如何正确执行此操作并不断收到不同的错误。 这是我拥有的当前代码。 有人可以使用我拥有的代码帮助我/引导我完成正确的方法吗? 还是我需要重写所有内容?
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
public class acmeBankLogin {
private JFrame frmAcmeBankLogin;
private JPasswordField passwordInput;
private JTextField usernameInput;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
acmeBankLogin window = new acmeBankLogin();
window.frmAcmeBankLogin.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public acmeBankLogin() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmAcmeBankLogin = new JFrame();
frmAcmeBankLogin.setTitle("ACME Bank Login");
frmAcmeBankLogin.setBounds(100, 100, 435, 230);
frmAcmeBankLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel lblNewLabel = new JLabel("Username: ");
JLabel lblNewLabel_1 = new JLabel("Password:");
passwordInput = new JPasswordField(4);
usernameInput = new JTextField();
usernameInput.setColumns(10);
JButton btnNewButton = new JButton("Submit");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String password = passwordInput.getText();
String username = usernameInput.getText();
if (username.trim().toLowerCase().equals("uccs") && password.trim().equals("1234")) {
acmeBank acmeBank = new acmeBank();
frmAcmeBank = new JFrame();
}
else {
JOptionPane.showMessageDialog(null, "Incorrect username/password!");
}
}
});
GroupLayout groupLayout = new GroupLayout(frmAcmeBankLogin.getContentPane());
groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout
.createSequentialGroup().addGap(43)
.addGroup(groupLayout
.createParallelGroup(Alignment.LEADING).addComponent(lblNewLabel).addComponent(lblNewLabel_1))
.addGap(34)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false).addComponent(passwordInput)
.addComponent(usernameInput, GroupLayout.DEFAULT_SIZE, 131, Short.MAX_VALUE))
.addContainerGap(156, Short.MAX_VALUE))
.addGroup(Alignment.TRAILING,
groupLayout.createSequentialGroup().addContainerGap(287, Short.MAX_VALUE)
.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE)
.addGap(51)));
groupLayout
.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup().addGap(47)
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel)
.addComponent(usernameInput, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(9).addComponent(btnNewButton).addGap(14)
.addGroup(
groupLayout.createParallelGroup(Alignment.BASELINE).addComponent(lblNewLabel_1)
.addComponent(passwordInput, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(70, Short.MAX_VALUE)));
frmAcmeBankLogin.getContentPane().setLayout(groupLayout);
}
}
在输入正确的用户名和密码后,应在第 74 行进行继承。
frmAcmeBank
在任何地方声明,这是您的错误。首先将代码更新为更像...
JButton btnNewButton = new JButton("Submit");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String password = passwordInput.getText();
String username = usernameInput.getText();
if (username.trim().toLowerCase().equals("uccs") && password.trim().equals("1234")) {
acmeBank acmeBank = new acmeBank();
JFrame frmAcmeBank = new JFrame();
} else {
JOptionPane.showMessageDialog(null, "Incorrect username/password!");
}
}
});
现在看一下initialize
方法的顶部,看看你将如何 go 关于将acmeBank
添加到JFrame
...假设acmeBank
是一个组件。
总体而言,更好的解决方案是使用CardLayout
您可能还想查看Java 代码约定。 它会让你更容易阅读其他人的代码,也让其他人更容易阅读你的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.