提问人:FlamingGhost 提问时间:11/12/2023 更新时间:11/12/2023 访问量:45
在 CardLayout 中使用面板内部的按钮切换 JPanels
Switching JPanels in a CardLayout using buttons inside the panel itself
问:
我正在尝试使用 GUI 创建一个简单的 Java 程序,使用 Swing 作为主要工具。我尝试使用 CardLayout 来处理在同一框架内切换“屏幕”(面板),虽然网上有这方面的教程,但大多数(如果不是全部)都认为按钮位于我想要切换的面板之外,而我正在尝试做相反的事情,用于切换面板的按钮位于面板本身内部。所以我一直在努力做到这一点,但即使在互联网上寻找了几个小时之后,我也不知道如何做到这一点。
我尝试在 Main 中创建一个单独的方法来处理面板切换并在 Login 中引用它,但这不起作用,因为我无法让它传递正确的参数,除此之外,它一直抛出返回 null 的错误或完全不起作用。
以下是重要文件的代码:
主要
package gui;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
/**
* Create the frame.
*/
public Main() {
JFrame frame = new JFrame("Swing Frame");
Login loginpanel = new Login();
HomeMenu homemenu = new HomeMenu();
JPanel cards = new JPanel(new CardLayout());
cards.add(loginpanel, "Panel 1");
cards.add(homemenu, "Panel 2");
Container pane = frame.getContentPane();
pane.add(cards, BorderLayout.CENTER);
// Set the size of the frame
frame.setSize(900, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
Main frame = new Main();
frame.setVisible(false);
}
});
}
}
登录
package gui;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
public class Login extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField textField;
private JPasswordField passwordField;
public Login getPanel() {
return this;
}
public Login() {
setBounds(100, 100, 900, 600);
setBorder(new EmptyBorder(5, 5, 5, 5));
setLayout(null);
JLabel lblNewLabel = new JLabel("BOOKSTORE MANAGEMENT SYS 1.0");
lblNewLabel.setBounds(12, 10, 878, 81);
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
add(lblNewLabel);
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 38));
JLabel lblNewLabel_1 = new JLabel("Enter Username:");
lblNewLabel_1.setBounds(217, 164, 180, 27);
lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 23));
add(lblNewLabel_1);
textField = new JTextField();
textField.setBounds(433, 163, 255, 28);
add(textField);
textField.setColumns(10);
JLabel lblNewLabel_1_1 = new JLabel("Enter Password:");
lblNewLabel_1_1.setFont(new Font("Tahoma", Font.PLAIN, 23));
lblNewLabel_1_1.setBounds(217, 248, 180, 27);
add(lblNewLabel_1_1);
passwordField = new JPasswordField();
passwordField.setBounds(433, 253, 255, 28);
add(passwordField);
JButton btnNewButton = new JButton("Log in");
btnNewButton.setForeground(new Color(0, 0, 0));
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 23));
btnNewButton.setBounds(347, 369, 176, 46);
add(btnNewButton);
btnNewButton.addActionListener((ActionListener) new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
}
});
}
}
答: 暂无答案
评论