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

news2024/12/27 18:30:43

示例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):

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt之饼图(Pie Graph)

[TOC](Qt之饼图(Pie Graph)) 饼图名为Pie Graph&#xff0c;用于显示一个数据系列中各项的大小与各项总和的比例。本文基于QtCharts实现饼图的显示。 1.实现过程 1.1环境配置 &#xff08;1&#xff09;首先想要使用QtCharts模块&#xff0c;需要在安装qt时选择勾选安装QtCha…

ThreadPoolExecutor线程池创建线程

线程池介绍 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源&#xff0c;如果无限制的创建&#xff0c;不仅会消耗系统资源&#…

一站式uniapp优质源码项目模版交易平台的崛起与影响

一、引言 随着信息技术的飞速发展&#xff0c;软件源码已成为推动行业进步的重要力量。源码的获取、交易和流通&#xff0c;对于开发者、企业以及项目团队而言&#xff0c;具有极其重要的意义。为满足市场对高质量源码资源的迫切需求&#xff0c;一站式uniapp优质源码项目模版…

在Ubuntu 18.04.6 LTS 交叉编译生成Windows 11下的gdb 8.1.1

1. 安装mingw sudo apt-get install mingw-w64 2. 下载 gdb 8.1.1源码 https://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz 解压命令 tar -xf gdb-8.1.1.tar.gz 进入目录,创建build目录: hq@hq:~/gdb-8.1.1/build$ 执行配置 ../confi

网盘挂载系统-知识资源系统-私域内容展示系统

系统介绍&#xff1a; 存储&#xff1a;一共支持约30款云盘存储&#xff0c;其中包括主流的&#xff08;百度网盘、阿里云盘、夸克云盘、迅雷云盘、蓝奏云、天翼云盘&#xff09;&#xff0c;部分展示 以及特别的&#xff08;一刻相册、对象存储、又拍云存储、SFTP、MEGA 网盘…

【旭日x3派】部署官方yolov5全流程

地平线旭日x3派部署yolov5--全流程 前言一、深度学习环境安装二、安装docker三、部署3.1、安装工具链镜像3.2、配置天工开物OpenExplorer工具包3.3、创建深度学习虚拟空间&#xff0c;安装依赖&#xff1a;3.4、下载yolov5项目源码并运行3.5、pytorch的pt模型文件转onnx3.6、最…

基于单片机技术的按键扫描电路分析

摘 要&#xff1a; 单片机应用技术被广泛应用于各种智能控制系统中&#xff0c;是电子信息类专业学生必修的一门专业课。在单片机端口信息输入模块中&#xff0c;按键是主要元器件之一&#xff0c;笔者主要介绍矩阵键盘的电路设计及控制程序编写&#xff0c;分析了单片机端口连…

C++:enum枚举共用体union

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

(单机版)神魔大陆|v0.51.0|冰火荣耀

前言 今天给大家带来一款单机游戏的架设&#xff1a;神魔大陆v0.51.0:冰火荣耀。 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; (单机版)神魔大陆 下面我将详细的教程交给大家&#xff0c;请耐心阅…

学校消防设施设备管理系统

建立和落实校园消防安全管理责任制,做到消防安全工作有人专管,部门和岗位有人落实的日常管理&#xff0c;及时发现消防安全隐患,及时反映,及时处理,杜绝校园内消防安全隐患。 凡尔码平台搭建学校消防设施设备管理系统可以通过设备管理系统对消防器材设施基本信息、设施有效期、…

Webpack: 开发 PWA、Node、Electron 应用

概述 毋庸置疑&#xff0c;对前端开发者而言&#xff0c;当下正是一个日升月恒的美好时代&#xff01;在久远的过去&#xff0c;Web 页面的开发技术链条非常原始而粗糙&#xff0c;那时候的 JavaScript 更多用来点缀 Web 页面交互而不是用来构建一个完整的应用。直到 2009年5月…

Attention (注意力机制)

1. 背景&#xff1a; 字面的意思&#xff1a;给你一些东西(看见一个美女:).....)&#xff0c;你会注意什么&#xff1f; 大数据的时代下&#xff0c;有太多的数据&#xff0c;我们又该如何选择重要的数据呢&#xff1f; Attention 诞生了&#xff0c;但是又该如何去做呢(i.e., …

原子变量原理剖析

一、原子操作 原子操作保证指令以原子的方式执行&#xff0c;执行过程不被打断。先看一个实例&#xff0c;如下所示&#xff0c;如果thread_func_a和thread_func_b同时运行&#xff0c;执行完成后&#xff0c;i的值是多少&#xff1f; // test.c static int i 0;void thread…

MathType7.6永久破解激活码注册码 包含安装包下载

MathType是一款强大的数学公式编辑器&#xff0c;它能够帮助用户轻松编辑各种复杂的数学公式和符号。无论是学生、教师还是科研人员&#xff0c;MathType都能提供专业、精确的数学公式编辑服务。 在学习和工作中&#xff0c;我们常常会遇到需要编写数学公式的情况。然而&#x…

Excel+vue+java实现批量处理功能

需求背景: 产品创建流程比较复杂&#xff0c;有时候需要一次性创建多至10个&#xff0c;所以做了Excel维护产品信息&#xff0c;直接导入创建的功能。能极大提高效率。 简要概括实现&#xff1a; 一、参考单个创建&#xff0c;设计创建模板&#xff0c;表头对应填写字段名&…

Go使用Gin框架开发的Web程序部署在Linux时,无法绑定监听Ipv4端口

最近有写一部分go语言开发的程序&#xff0c;在部署程序时发现&#xff0c;程序在启动后并没有绑定ipv4的端口&#xff0c;而是直接监听绑定ipv6的端口。 当我用netstat -antup | grep 3601查找我的gin服务启动的端口占用情况的时候发现&#xff0c;我的服务直接绑定了tcp6 &a…

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

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

使用 Ubuntu x86_64 平台交叉编译适用于 Linux aarch64(arm64) 平台的 QT5(包含OpenGL/WebEngine支持) 库

使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库 目录 使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库写在前面前期准备编译全流程1. 环境搭建2. 复制源码包并解压&#xff0c;创…

信息就像糖,让人上瘾

今天阅读阮一峰的科技爱好者周刊&#xff0c;其中提到一个观点「信息就像糖&#xff0c;让人上瘾」&#xff0c;让人印象深&#xff0c;糖之所以上瘾&#xff0c;是因为会让人增加多巴胺的分泌&#xff0c;让人成瘾。而研究表明&#xff0c;信息上瘾跟糖上瘾一样&#xff0c;信…

Golang | Leetcode Golang题解之第198题打家劫舍

题目&#xff1a; 题解&#xff1a; func rob(nums []int) int {if len(nums) 0 {return 0}if len(nums) 1 {return nums[0]}first : nums[0]second : max(nums[0], nums[1])for i : 2; i < len(nums); i {first, second second, max(first nums[i], second)}return se…