如何创建具有多个页面的swing应用程序

时间:2014-12-29 10:50:26

标签: java swing

之前我使用servlet创建了一个小应用程序,其中第一页显示用户注册页面,该页面使用提交按钮捕获用户的名字和姓氏等基本信息。

让我们说在第一页输入的用户名是" Scott"然后,一旦用户提交表单,然后在第二页,我已经创建了欢迎消息,作为"欢迎Scott"。然后我提供了一个选项,通过连接到数据库来查看之前已注册到该应用程序的用户列表。

现在我想在Swing应用程序中实现相同的功能。我是Swings的新手,所以我尝试从各种来源学习它,但我无法找到一个可以在多个框架/面板之间导航的示例。

对于我在程序下面创建的第一页显示文本字段和提交按钮:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class UserRegistration extends JFrame {

    JButton button;

    public UserRegistration() {

        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());

        final JLabel label = new JLabel("Please enter details: ");
        JLabel firstName = new JLabel("First Name");
        JLabel lastName = new JLabel("Last Name");
        final JTextField firstNameTxt = new JTextField(20);
        final JTextField lastNameTxt = new JTextField(20);

        button = new JButton("Submit");
        JButton button1 = new JButton("Cancel");

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                dispose();
                UserDetails user = new UserDetails();
                user.showDetails();
                user.setVisible(true);
            }
        });

        add(label);
        add(firstName);
        add(firstNameTxt);
        add(lastName);
        add(lastNameTxt);
        add(button);
        add(button1);

        setVisible(true);

    }
    public static void main(String args[]) {
        new UserRegistration();
    }

}

从第1帧到第2帧我使用这些行:

                dispose();
                UserDetails user = new UserDetails();
                user.showDetails();
                user.setVisible(true);

现在第二页我无法找到如何获取用户输入的参数,这是我遇到的代码:

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class UserDetails extends JFrame {

    //private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public UserDetails() {
        prepareGUI();
    }


    private void prepareGUI() {
        //mainFrame = new JFrame("Java Swing Examples");
        setSize(800, 800);
        setLayout(new GridLayout(3, 5));
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        headerLabel = new JLabel("This is Header", JLabel.CENTER);
        statusLabel = new JLabel("This is Status", JLabel.CENTER);

        statusLabel.setSize(350, 100);

        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());

        System.out.println(controlPanel);
        add(headerLabel);
        add(controlPanel);
        add(statusLabel);
        //setVisible(true);
    }

    public void showDetails() {

        // Here I want display the welcome message and also to add all the registered user details.
    }
}

请帮我看看如何创建包含多个页面的应用程序?

1 个答案:

答案 0 :(得分:5)

Swing提供CardLayout类来提供您所需的内容。它允许您加载两个或更多组件(JPanels)并允许共享相同的显示。它可以像向导一样在卡片之间导航。请查看本教程:CardLayout