【小学期】常用基于Swing的七个静态界面

示例1:基本的带按钮和标签的界面

在这里插入图片描述

import javax.swing.*;
import java.awt.*;

public class SimpleSwingApp1 {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Swing App 1");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());

        JLabel label = new JLabel("Hello, Swing!", SwingConstants.CENTER);
        JButton button = new JButton("Click Me");

        panel.add(label, BorderLayout.CENTER);
        panel.add(button, BorderLayout.SOUTH);

        frame.add(panel);
        frame.setVisible(true);
    }
}

示例2:带文本框和复选框的界面

在这里插入图片描述

import javax.swing.*;
import java.awt.*;

public class SimpleSwingApp2 {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Swing App 2");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 1));

        JLabel label = new JLabel("Enter your name:");
        JTextField textField = new JTextField();
        JCheckBox checkBox = new JCheckBox("I agree to the terms and conditions");

        panel.add(label);
        panel.add(textField);
        panel.add(checkBox);

        frame.add(panel);
        frame.setVisible(true);
    }
}

示例3:带单选按钮和下拉菜单的界面

在这里插入图片描述

import javax.swing.*;
import java.awt.*;

public class SimpleSwingApp3 {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Swing App 3");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2));

        JLabel genderLabel = new JLabel("Gender:");
        JRadioButton maleButton = new JRadioButton("Male");
        JRadioButton femaleButton = new JRadioButton("Female");
        ButtonGroup genderGroup = new ButtonGroup();
        genderGroup.add(maleButton);
        genderGroup.add(femaleButton);

        JLabel countryLabel = new JLabel("Country:");
        String[] countries = {"USA", "Canada", "UK", "Australia"};
        JComboBox<String> countryComboBox = new JComboBox<>(countries);

        panel.add(genderLabel);
        panel.add(maleButton);
        panel.add(new JLabel());  // Empty cell
        panel.add(femaleButton);
        panel.add(countryLabel);
        panel.add(countryComboBox);

        frame.add(panel);
        frame.setVisible(true);
    }
}

示例4:界面上有三个按钮,每个按钮点击后都会跳转到新的界面

在这里插入图片描述
在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainApp {
    public static void main(String[] args) {
        // 创建主框架
        JFrame mainFrame = new JFrame("Main Frame");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(400, 300);
        
        // 创建主面板
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new GridLayout(3, 1));
        
        // 创建三个按钮
        JButton button1 = new JButton("Go to Frame 1");
        JButton button2 = new JButton("Go to Frame 2");
        JButton button3 = new JButton("Go to Frame 3");
        
        // 为按钮添加动作监听器
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 点击按钮1时打开新界面
                openNewFrame("Frame 1", "Welcome to Frame 1");
            }
        });
        
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 点击按钮2时打开新界面
                openNewFrame("Frame 2", "Welcome to Frame 2");
            }
        });
        
        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 点击按钮3时打开新界面
                openNewFrame("Frame 3", "Welcome to Frame 3");
            }
        });
        
        // 将按钮添加到主面板
        mainPanel.add(button1);
        mainPanel.add(button2);
        mainPanel.add(button3);
        
        // 将主面板添加到主框架
        mainFrame.add(mainPanel);
        
        // 显示主框架
        mainFrame.setVisible(true);
    }
    
    // 打开新界面的方法
    private static void openNewFrame(String frameTitle, String message) {
        // 创建新框架
        JFrame newFrame = new JFrame(frameTitle);
        newFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 仅关闭当前窗口
        newFrame.setSize(300, 200);
        
        // 创建新面板
        JPanel newPanel = new JPanel();
        newPanel.setLayout(new BorderLayout());
        
        // 创建标签并添加到面板
        JLabel label = new JLabel(message, SwingConstants.CENTER);
        newPanel.add(label, BorderLayout.CENTER);
        
        // 将面板添加到框架
        newFrame.add(newPanel);
        
        // 显示新框架
        newFrame.setVisible(true);
    }
}

示例5:菜单栏导航到不同的功能页面:在这里插入图片描述

  1. 主类和主方法(MainApp.java)

    • 创建一个主框架 mainFrame,设置标题为 “Main Frame”,并设置默认关闭操作和窗口大小。
    • 创建一个主面板 mainPanel,使用 GridLayout 布局将三个按钮垂直排列。
    • 创建三个按钮 button1button2button3,并设置按钮上的文本。
    • 为每个按钮添加动作监听器,当按钮被点击时,会调用 openNewFrame 方法打开一个新的窗口。
    • 将所有按钮添加到主面板,并将主面板添加到主框架中。
    • 最后,设置主框架为可见。
  2. 打开新界面的方法(openNewFrame)

    • 该方法接收两个参数:窗口标题 frameTitle 和显示消息 message
    • 创建一个新的框架 newFrame,设置标题和关闭操作(仅关闭当前窗口而非整个应用程序)。
    • 创建一个新面板 newPanel,使用 BorderLayout 布局。
    • 创建一个标签 label,设置显示的文本和对齐方式,并将标签添加到面板的中央位置。
    • 将面板添加到新的框架中,并设置新框架为可见。
      好的,我可以为你提供一个简单的Java Swing应用程序框架,该框架包含三个功能模块。每个功能模块都是一个静态界面,用户可以通过菜单栏选择不同的功能。这个项目系统的基本框架将包括:
  3. 主界面:包含菜单栏,可以导航到不同的功能模块。

  4. 功能模块1:例如,用户信息展示界面。

  5. 功能模块2:例如,产品信息展示界面。

  6. 功能模块3:例如,订单信息展示界面。

以下是完整的代码示例:

主类:MainApp.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainApp {
    public static void main(String[] args) {
        // 创建主框架
        JFrame mainFrame = new JFrame("Simple Project System");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(600, 400);
        
        // 创建菜单栏
        JMenuBar menuBar = new JMenuBar();
        
        // 创建菜单
        JMenu menu = new JMenu("Menu");
        
        // 创建菜单项
        JMenuItem userMenuItem = new JMenuItem("User Info");
        JMenuItem productMenuItem = new JMenuItem("Product Info");
        JMenuItem orderMenuItem = new JMenuItem("Order Info");
        
        // 添加菜单项到菜单
        menu.add(userMenuItem);
        menu.add(productMenuItem);
        menu.add(orderMenuItem);
        
        // 添加菜单到菜单栏
        menuBar.add(menu);
        
        // 设置菜单栏到主框架
        mainFrame.setJMenuBar(menuBar);
        
        // 创建主面板
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new CardLayout());
        
        // 创建功能页面
        JPanel userPanel = createUserPanel();
        JPanel productPanel = createProductPanel();
        JPanel orderPanel = createOrderPanel();
        
        // 将功能页面添加到主面板
        mainPanel.add(userPanel, "User Info");
        mainPanel.add(productPanel, "Product Info");
        mainPanel.add(orderPanel, "Order Info");
        
        // 为菜单项添加动作监听器
        userMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout)(mainPanel.getLayout());
                cl.show(mainPanel, "User Info");
            }
        });
        
        productMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout)(mainPanel.getLayout());
                cl.show(mainPanel, "Product Info");
            }
        });
        
        orderMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout)(mainPanel.getLayout());
                cl.show(mainPanel, "Order Info");
            }
        });
        
        // 将主面板添加到主框架
        mainFrame.add(mainPanel);
        
        // 显示主框架
        mainFrame.setVisible(true);
    }
    
    // 创建用户信息面板
    private static JPanel createUserPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        
        JLabel label = new JLabel("User Information", SwingConstants.CENTER);
        panel.add(label, BorderLayout.CENTER);
        
        // 添加更多用户信息组件
        // ...
        
        return panel;
    }
    
    // 创建产品信息面板
    private static JPanel createProductPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        
        JLabel label = new JLabel("Product Information", SwingConstants.CENTER);
        panel.add(label, BorderLayout.CENTER);
        
        // 添加更多产品信息组件
        // ...
        
        return panel;
    }
    
    // 创建订单信息面板
    private static JPanel createOrderPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        
        JLabel label = new JLabel("Order Information", SwingConstants.CENTER);
        panel.add(label, BorderLayout.CENTER);
        
        // 添加更多订单信息组件
        // ...
        
        return panel;
    }
}

代码说明:

  1. 主类和主方法(MainApp.java)

    • 创建一个主框架 mainFrame,设置标题为 “Simple Project System”,并设置默认关闭操作和窗口大小。
    • 创建一个菜单栏 menuBar,并在其中创建一个菜单 menu
    • 在菜单中添加三个菜单项:userMenuItemproductMenuItemorderMenuItem,分别对应用户信息、产品信息和订单信息的功能。
    • 创建一个主面板 mainPanel,使用 CardLayout 布局管理不同的功能页面。
    • 创建三个功能页面:userPanelproductPanelorderPanel,分别展示用户信息、产品信息和订单信息。
    • 为每个菜单项添加动作监听器,当菜单项被点击时,会显示相应的功能页面。
    • 将所有组件添加到主框架中,并设置主框架为可见。
  2. 功能面板的创建方法

    • createUserPanelcreateProductPanelcreateOrderPanel 方法分别创建用户信息、产品信息和订单信息的静态界面。
    • 每个方法返回一个 JPanel,并在面板中添加一个标签展示对应的功能名称。
    • 你可以在这些方法中添加更多的组件来展示更详细的信息。

示例6:三个选项卡到不同的功能页面

在这里插入图片描述

主类:MainApp.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;

public class MainApp {
    public static void main(String[] args) {
        // 创建主框架
        JFrame mainFrame = new JFrame("Simple Project System");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(800, 600);

        // 创建选项卡面板
        JTabbedPane tabbedPane = new JTabbedPane();

        // 创建用户信息面板
        JPanel userPanel = createUserPanel();
        tabbedPane.addTab("User Info", userPanel);

        // 创建产品信息面板
        JPanel productPanel = createProductPanel();
        tabbedPane.addTab("Product Info", productPanel);

        // 创建订单信息面板
        JPanel orderPanel = createOrderPanel();
        tabbedPane.addTab("Order Info", orderPanel);

        // 将选项卡面板添加到主框架
        mainFrame.add(tabbedPane);

        // 显示主框架
        mainFrame.setVisible(true);
    }

    // 创建用户信息面板
    private static JPanel createUserPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"ID", "Name", "Email"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, "John Doe", "john@example.com"});
        model.addRow(new Object[]{2, "Jane Smith", "jane@example.com"});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField idField = new JTextField(5);
        JTextField nameField = new JTextField(10);
        JTextField emailField = new JTextField(15);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("ID:"));
        controlPanel.add(idField);
        controlPanel.add(new JLabel("Name:"));
        controlPanel.add(nameField);
        controlPanel.add(new JLabel("Email:"));
        controlPanel.add(emailField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int id = Integer.parseInt(idField.getText());
            String name = nameField.getText();
            String email = emailField.getText();
            model.addRow(new Object[]{id, name, email});
        });

        updateButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(idField.getText(), selectedRow, 0);
                model.setValueAt(nameField.getText(), selectedRow, 1);
                model.setValueAt(emailField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }

    // 创建产品信息面板
    private static JPanel createProductPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"ID", "Name", "Price"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, "Product A", 10.0});
        model.addRow(new Object[]{2, "Product B", 20.0});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField idField = new JTextField(5);
        JTextField nameField = new JTextField(10);
        JTextField priceField = new JTextField(10);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("ID:"));
        controlPanel.add(idField);
        controlPanel.add(new JLabel("Name:"));
        controlPanel.add(nameField);
        controlPanel.add(new JLabel("Price:"));
        controlPanel.add(priceField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int id = Integer.parseInt(idField.getText());
            String name = nameField.getText();
            double price = Double.parseDouble(priceField.getText());
            model.addRow(new Object[]{id, name, price});
        });

        updateButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(idField.getText(), selectedRow, 0);
                model.setValueAt(nameField.getText(), selectedRow, 1);
                model.setValueAt(priceField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }

    // 创建订单信息面板
    private static JPanel createOrderPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"Order ID", "Product ID", "Quantity"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, 1, 2});
        model.addRow(new Object[]{2, 2, 1});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField orderIdField = new JTextField(5);
        JTextField productIdField = new JTextField(5);
        JTextField quantityField = new JTextField(5);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("Order ID:"));
        controlPanel.add(orderIdField);
        controlPanel.add(new JLabel("Product ID:"));
        controlPanel.add(productIdField);
        controlPanel.add(new JLabel("Quantity:"));
        controlPanel.add(quantityField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int orderId = Integer.parseInt(orderIdField.getText());
            int productId = Integer.parseInt(productIdField.getText());
            int quantity = Integer.parseInt(quantityField.getText());
            model.addRow(new Object[]{orderId, productId, quantity});
        });

        updateButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(orderIdField.getText(), selectedRow, 0);
                model.setValueAt(productIdField.getText(), selectedRow, 1);
                model.setValueAt(quantityField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }
}

代码说明:

  1. 主类和主方法(MainApp.java)

    • 创建一个主框架 mainFrame,设置标题为 “Simple Project System”,并设置默认关闭操作和窗口大小。
    • 创建一个 JTabbedPane 组件用于选项卡布局。
    • 创建三个选项卡面板:userPanelproductPanelorderPanel,分别展示用户信息、产品信息和订单信息。
    • 将选项卡面板添加到 JTabbedPane 中,并将 JTabbedPane 添加到主框架。
    • 设置主框架为可见。
  2. 功能面板的创建方法

    • createUserPanelcreateProductPanelcreateOrderPanel 方法分别创建用户信息、产品信息和订单信息的面板。
    • 每个方法都创建一个 JTable 组件用于展示数据,并提供增删改查操作的按钮和文本框。
    • 增加示例数据到表格中。
    • 添加按钮功能,分别实现添加、更新和删除操作。

示例7:带有登录界面的常用系统的Swing静态界面框架

在这里插入图片描述
账号:“admin”
密码: “password”
在这里插入图片描述
在这里插入图片描述

主类:MainApp.java

package view;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.table.DefaultTableModel;

public class MainApp {
    public static void main(String[] args) {
        // 创建并显示登录界面
        LoginFrame loginFrame = new LoginFrame();
        loginFrame.setVisible(true);
    }
}

class LoginFrame extends JFrame {
    private JTextField usernameField;
    private JPasswordField passwordField;

    public LoginFrame() {
        // 设置登录框架
        setTitle("Login");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 150);
        setLocationRelativeTo(null);

        // 创建面板
        JPanel panel = new JPanel(new GridLayout(3, 2));

        // 添加组件到面板
        panel.add(new JLabel("Username:"));
        usernameField = new JTextField();
        panel.add(usernameField);

        panel.add(new JLabel("Password:"));
        passwordField = new JPasswordField();
        panel.add(passwordField);

        JButton loginButton = new JButton("Login");
        panel.add(loginButton);

        JButton cancelButton = new JButton("Cancel");
        panel.add(cancelButton);

        // 添加面板到框架
        add(panel);

        // 添加按钮监听器
        loginButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String username = usernameField.getText();
                String password = new String(passwordField.getPassword());

                if (authenticate(username, password)) {
                    // 登录成功,打开主界面
                    MainFrame mainFrame = new MainFrame();
                    mainFrame.setVisible(true);
                    dispose(); // 关闭登录框架
                } else {
                    // 登录失败,显示错误信息
                    JOptionPane.showMessageDialog(LoginFrame.this, "Invalid username or password", "Login Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        cancelButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }

    private boolean authenticate(String username, String password) {
        // 简单的用户名和密码验证
        return "admin".equals(username) && "password".equals(password);
    }
}

class MainFrame extends JFrame {
    public MainFrame() {
        // 设置主框架
        setTitle("Main Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 600);
        setLocationRelativeTo(null);

        // 创建选项卡面板
        JTabbedPane tabbedPane = new JTabbedPane();

        // 创建用户信息面板
        JPanel userPanel = createUserPanel();
        tabbedPane.addTab("User Info", userPanel);

        // 创建产品信息面板
        JPanel productPanel = createProductPanel();
        tabbedPane.addTab("Product Info", productPanel);

        // 创建订单信息面板
        JPanel orderPanel = createOrderPanel();
        tabbedPane.addTab("Order Info", orderPanel);

        // 将选项卡面板添加到主框架
        add(tabbedPane);
    }

    // 创建用户信息面板
    private JPanel createUserPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"ID", "Name", "Email"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, "John Doe", "john@example.com"});
        model.addRow(new Object[]{2, "Jane Smith", "jane@example.com"});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField idField = new JTextField(5);
        JTextField nameField = new JTextField(10);
        JTextField emailField = new JTextField(15);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("ID:"));
        controlPanel.add(idField);
        controlPanel.add(new JLabel("Name:"));
        controlPanel.add(nameField);
        controlPanel.add(new JLabel("Email:"));
        controlPanel.add(emailField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int id = Integer.parseInt(idField.getText());
            String name = nameField.getText();
            String email = emailField.getText();
            model.addRow(new Object[]{id, name, email});
        });

        updateButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(idField.getText(), selectedRow, 0);
                model.setValueAt(nameField.getText(), selectedRow, 1);
                model.setValueAt(emailField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }

    // 创建产品信息面板
    private JPanel createProductPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"ID", "Name", "Price"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, "Product A", 10.0});
        model.addRow(new Object[]{2, "Product B", 20.0});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField idField = new JTextField(5);
        JTextField nameField = new JTextField(10);
        JTextField priceField = new JTextField(10);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("ID:"));
        controlPanel.add(idField);
        controlPanel.add(new JLabel("Name:"));
        controlPanel.add(nameField);
        controlPanel.add(new JLabel("Price:"));
        controlPanel.add(priceField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int id = Integer.parseInt(idField.getText());
            String name = nameField.getText();
            double price = Double.parseDouble(priceField.getText());
            model.addRow(new Object[]{id, name, price});
        });

        updateButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(idField.getText(), selectedRow, 0);
                model.setValueAt(nameField.getText(), selectedRow, 1);
                model.setValueAt(priceField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }

    // 创建订单信息面板
    private JPanel createOrderPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        String[] columnNames = {"Order ID", "Product ID", "Quantity"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        // 添加示例数据
        model.addRow(new Object[]{1, 1, 2});
        model.addRow(new Object[]{2, 2, 1});

        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane, BorderLayout.CENTER);

        JPanel controlPanel = new JPanel();
        JTextField orderIdField = new JTextField(5);
        JTextField productIdField = new JTextField(5);
        JTextField quantityField = new JTextField(5);
        JButton addButton = new JButton("Add");
        JButton updateButton = new JButton("Update");
        JButton deleteButton = new JButton("Delete");

        controlPanel.add(new JLabel("Order ID:"));
        controlPanel.add(orderIdField);
        controlPanel.add(new JLabel("Product ID:"));
        controlPanel.add(productIdField);
        controlPanel.add(new JLabel("Quantity:"));
        controlPanel.add(quantityField);
        controlPanel.add(addButton);
        controlPanel.add(updateButton);
        controlPanel.add(deleteButton);

        panel.add(controlPanel, BorderLayout.SOUTH);

        // 添加按钮功能
        addButton.addActionListener(e -> {
            int orderId = Integer.parseInt(orderIdField.getText());
            int productId = Integer.parseInt(productIdField.getText());
            int quantity = Integer.parseInt(quantityField.getText());
            model.addRow(new Object[]{orderId, productId, quantity});
        });

        updateButton.addActionListener(e -> {

            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(orderIdField.getText(), selectedRow, 0);
                model.setValueAt(productIdField.getText(), selectedRow, 1);
                model.setValueAt(quantityField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }
}

```java
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.setValueAt(orderIdField.getText(), selectedRow, 0);
                model.setValueAt(productIdField.getText(), selectedRow, 1);
                model.setValueAt(quantityField.getText(), selectedRow, 2);
            }
        });

        deleteButton.addActionListener(e -> {
            int selectedRow = table.getSelectedRow();
            if (selectedRow != -1) {
                model.removeRow(selectedRow);
            }
        });

        return panel;
    }
}

代码解释

  1. 主类 (MainApp.java):

    • 这是程序的入口点,创建并显示登录界面 LoginFrame
  2. 登录框架 (LoginFrame.java):

    • 包含用户名和密码输入框以及登录和取消按钮。
    • 验证用户名和密码,成功后打开主界面 MainFrame,否则显示错误信息。
  3. 主框架 (MainFrame.java):

    • 包含一个 JTabbedPane,其中有三个选项卡:用户信息、产品信息和订单信息。
    • 每个选项卡都有一个表格和一些控制按钮,用于添加、更新和删除表格中的数据。
  4. 用户信息面板 (createUserPanel):

    • 包含一个表格显示用户信息和一些控制按钮。
    • 添加按钮、更新按钮和删除按钮允许用户对表格数据进行操作。
  5. 产品信息面板 (createProductPanel):

    • 类似于用户信息面板,但用于显示和管理产品信息。
  6. 订单信息面板 (createOrderPanel):

    • 类似于用户信息面板,但用于显示和管理订单信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/757202.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

申请免费6个月SSL证书方式和证书特点槽点

当前&#xff0c;HTTPS访问已成为网站标配。随着免费证书平台的不断涌现&#xff0c;Lets Encrypt尤为瞩目&#xff0c;其提供的泛域名和多域名证书申请功能&#xff0c;显著降低了站长和企业的经济负担。从一开始&#xff0c;来此加密就支持通过Lets Encrypt申请免费的域名SSL…

OpenFAST软件中linux-gnu,linux-intel,macos-gnu,vtk,windows-intel文件的作用

在OpenFAST中&#xff0c;5MW_Land_DLL_WTurb目录下的这五个文件夹分别有不同的用途&#xff0c;主要是为了支持不同操作系统和平台的编译和仿真工作。以下是每个文件夹的总结及其作用&#xff1a; linux-gnu 作用&#xff1a;包含用于GNU编译器套件&#xff08;GCC&#xff09…

【高性能服务器】单进程服务器

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ 单进程服务器 …

基于Java的地方废物回收机构管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;MIS的总体思想&#xff0c;MySQL数据库 工具&#xff1a;Eclipse&#xff0c;…

落石滑坡监测报警系统:创新保障高速公路安全

​ ​​在现代交通建设中&#xff0c;高速公路的安全性和稳定性至关重要。特别是易发生落石区域&#xff0c;如何有效预防和应对落石滑坡带来的事故成为了一项关键性挑战。为此&#xff0c;落石滑坡监测报警系统应运而生&#xff0c;它通过先进的技术手段&#xff0c;为高速…

计算机网络微课堂(湖科大教书匠)TCP部分

计算机网络微课堂&#xff08;湖科大教书匠&#xff09;TCP部分 【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 TCP的流量控制 一般来说&#xff0c;我们希望数据传输得更快一些。但如果发送方把数据发送得过快&#xff0c;接收方就可能来不及接收&#…

win11 (将星x17promax) 安装WSL 子系统

最初只是想着在win11系统下挂载ext4盘符&#xff0c;方便使用。 目录 0. 简介1.安装WSL子系统1.1 环境确认1.1.1 虚拟化设置1.1.2 系统设置1.1.3 开启开发者模式&#xff08;此项有必要&#xff1f;&#xff09;1.1.4 安装WSL子系统 2.WSL操作指令2.0 WSL相关命令2.1 WSL重置2.…

pytorch神经网络训练(VGG-19)

VGG-19 导包 import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt 数据预处理和增强 transform transforms.Compose(…

java的序列化和反序列化

一、概念 序列化是将对象的常态存储到特定的存储介质中的过程。 反序列化是将特定的存储介质中的数据重新构建对象的过程。 问题 为每个对象属性——编写读写代码&#xff0c;过程很繁琐且非常容易出错&#xff0c;如何解决&#xff1f; 二、使用Object Output Stream类实现…

C++:enum枚举共用体union

enum枚举 C继承C的枚举用法 (1)典型枚举类型定义&#xff0c;枚举变量定义和使用 (2)枚举类型中的枚举值常量不能和其他外部常量名称冲突&#xff1a; 举例1宏定义&#xff0c;举例2另一个枚举 // 定义一个名为Color的枚举类型 enum Color {RED, // 红色&#xff0c;默认值…

golang跨平台GUI框架fyne介绍与使用详解,开放案例

golang跨平台GUI框架fyne介绍与使用详解 Fyne 是一个使用 Go 编写的易于使用的 UI 工具包和应用程序 API。 它旨在构建使用单一代码库在桌面和移动设备上运行的应用程序。 通过批量调用身份证实名和三网手机实名和银行卡核验等接口&#xff0c;完成fyne框架的基本使用介绍 主要…

AES加密算法及AES-CMAC原理白话版系统解析

本文框架 前言1. AES加密理论1.1 不同AES算法区别1.2 加密过程介绍1.2.1 加密模式和填充方案选择1.2.2 密钥扩展1.2.3分组处理1.2.4多轮加密1.2.4.1字节替换1.2.4.2行移位1.2.4.3列混淆1.2.4.4轮密钥加1.3 加密模式1.3.1ECB模式1.3.2CBC模式1.3.3CTR模式1.3.4CFB模式1.3.5 OFB模…

技术周总结2024.06.17~06.23(Doris数据库)

文章目录 一、06.18 周二1.1&#xff09; 问题01&#xff1a; doris数据表写入使用 stream load好还是 inser into好 一、06.18 周二 1.1&#xff09; 问题01&#xff1a; doris数据表写入使用 stream load好还是 inser into好 对于Doris数据表的写入操作&#xff0c;通常推荐…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-46语义分割和数据集

46语义分割和数据集 # 图像分割和实例分割 """ 图像分割将图像划分为若干组成区域&#xff0c;这类问题的方法通常利用图像中像素之间的相关性。 它在训练时不需要有关图像像素的标签信息&#xff0c;在预测时也无法保证分割出的区域具有我们希望得到的语义。 图…

PDF处理篇:如何调整 PDF 图像的大小

将视觉效果无缝集成到 PDF 中的能力使它们成为强大的通信工具。然而&#xff0c;笨拙的图像大小会迅速扰乱文档的流程&#xff0c;阻碍清晰度和专业性。幸运的是&#xff0c;GeekerPDF 和Adobe Acrobat等流行的应用程序提供了用户友好的解决方案来应对这一挑战。这个全面的指南…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时&#xff0c;外协公司和个人兼职各有优劣。个人兼职成本较低且灵活&#xff0c;但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制&#xff0c;尽管成本较高&#xff0c;但能提…

30 哈希的应用

位图 概念 题目 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何判断一个数是否在这40亿个整数中 1.遍历&#xff0c;时间复杂度O(N) 2.二分查找&#xff0c;需要先排序&#xff0c;排序(N*logN)&#xff0c;二分查找&#xff0c;logN。…

CriticGPT: 用 GPT-4 找出 GPT-4 的错误

CriticGPT 是 OpenAI 发布的一个基于 GPT-4 的模型&#xff0c;它可以帮助我们人类 Review 并纠正 ChatGPT 在生成代码时的错误。使用 CriticGPT 审查代码时&#xff0c;有 60% 的概率生成的代码更好更正确。

搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布

系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始&#xff08;生产端&#xff09;三、快速开始&#xff08;消费端&#xff09;四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中&#xff0c;消息队列作为核心组件…

容易涨粉的视频素材有哪些?容易涨粉的爆款短素材库网站分享

如何挑选社交媒体视频素材&#xff1a;顶级视频库推荐 在社交媒体上脱颖而出&#xff0c;视频素材的选择至关重要。以下是一些顶级的视频素材网站推荐&#xff0c;不仅可以提升视频质量&#xff0c;还能帮助你吸引更多粉丝。 蛙学网&#xff1a;创意的源泉 作为创意和独特性的…