• java Swing 面板 选项卡展示demo


    选项卡1:WeimingSyncApplets

    package com.adao.swing;
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.DefaultComboBoxModel;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    
    public class WeimingSyncApplets {
        public static void main(String[] args) {
            // 面板组件
            JPanel taskPanel = new JPanel();
            JPanel dbPanel = new JPanel();
            JTabbedPane tabbedPane = buildJTabbedPane(taskPanel, dbPanel);
            buildFrame(tabbedPane);
        }
    
        private static JTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {
            // 选项卡面板
            JTabbedPane tabbedPane = new JTabbedPane();
            // 通过BorderFactory来设置边框的特性
            tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
            tabbedPane.add("执行任务", taskPanel);
            tabbedPane.add("数据源配置", dbPanel);
    
            // 下拉框
            dbPanel.add(buildJLabel("数据库类型", 30, 20, 80, 25));
            String dbs[] = {"mysql", "oracle", "sqlserver"};
            dbPanel.add(buildJComboBox("mysql", "mysql", dbs, 0, 100, 20, 165, 25));
    
            // 文本框
            dbPanel.add(buildJLabel("用户名", 30, 50, 80, 25));
            JTextField dbUserName = buildJTextField("dbUserName", "dbUserName", 20, 100, 50, 165, 25);
            dbPanel.add(dbUserName);
    
            // 密码
            dbPanel.add(buildJLabel("密码", 30, 80, 80, 25));
            JPasswordField dbPassWord = buildJPasswordField("dbPassWord", "dbPassWord", 20, 100, 80, 165, 25);
            dbPanel.add(dbPassWord);
    
            // 添加按钮,并为按钮绑定事件监听
            JButton saveButton = buildJButton("保存", 185, 230, 80, 25);
            addActionListener(saveButton);
            dbPanel.add(saveButton);
    
            return tabbedPane;
        }
    
        private static void addActionListener(JButton saveButton) {
            // 为按钮绑定监听器
            saveButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 对话框
                    JOptionPane.showMessageDialog(null, "保存成功!");
                }
            });
        }
    
        private static JButton buildJButton(String name, int x, int y, int width, int height) {
            JButton button = new JButton(name);
            button.setBounds(x, y, width, height);
            return button;
        }
    
        private static JPasswordField buildJPasswordField(String defaultValue, String name, int columns, int x, int y, int width, int height) {
            JPasswordField jPasswordField = new JPasswordField(columns);
            jPasswordField.setText(defaultValue);
            jPasswordField.setName(name);
            jPasswordField.setBounds(x, y, width, height);
            return jPasswordField;
        }
    
        private static JTextField buildJTextField(String defaultValue, String name, int columns, int x, int y, int width, int height) {
            JTextField text = new JTextField(columns);
            text.setText(defaultValue);
            text.setName(name);
            text.setBounds(x, y, width, height);
            return text;
        }
    
        private static JComboBox buildJComboBox(Object selectedItem, String name, String[] elements, int selectedIndex, int x, int y, int width, int height) {
            DefaultComboBoxModel codeTypeModel = new DefaultComboBoxModel();
            // elements 下拉框中的选项
            for (String element : elements) {
                codeTypeModel.addElement(element);
            }
            JComboBox codeTypeBox = new JComboBox(codeTypeModel);
            codeTypeBox.setName(name);
            // 默认选中的下拉框选项
            codeTypeBox.setSelectedItem(selectedItem);
    //        codeTypeBox.setSelectedItem(selectedIndex);
            codeTypeBox.setBounds(x, y, width, height);
            // 添加下拉框事件监听器
            codeTypeBox.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        // 选择的下拉框选项
                        System.out.println(e.getItem());
                    }
                }
            });
            return codeTypeBox;
        }
    
        private static JLabel buildJLabel(String name, int x, int y, int width, int height) {
            JLabel label = new JLabel(name);
            label.setBounds(x, y, width, height);
            return label;
        }
    
        private static void buildFrame(JComponent component) {
            // 窗体容器
            JFrame frame = new JFrame("数据同步工具");
            frame.add(component);
            //  JFrame.EXIT_ON_CLOSE  退出
            //  JFrame.HIDE_ON_CLOSE  最小化隐藏
            frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
            // 设置布局
            frame.getContentPane().setLayout(new BorderLayout());
            frame.getContentPane().add(BorderLayout.CENTER, component);
            // 设置窗口最小尺寸
            frame.setMinimumSize(new Dimension(1060, 560));
            // 调整此窗口的大小,以适合其子组件的首选大小和布局
            frame.pack();
            // 设置窗口相对于指定组件的位置
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            // 设置窗口尺寸是否固定不变
            frame.setResizable(true);
        }
    
    }

    选项卡2:WeimingSyncApplets2

    package com.adao.swing;
    
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    
    import javax.swing.BorderFactory;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    public class WeimingSyncApplets2 {
        public static void main(String[] args) {
            // 面板组件
            JPanel taskPanel = new JPanel();
            JPanel dbPanel = new JPanel();
            JTabbedPane tabbedPane = buildJTabbedPane(taskPanel, dbPanel);
            buildFrame(tabbedPane);
        }
    
        private static JTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {
            // 选项卡面板
            JTabbedPane tabbedPane = new JTabbedPane();
            // 通过BorderFactory来设置边框的特性
            tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
            tabbedPane.add("执行任务", taskPanel);
            tabbedPane.add("数据源配置", dbPanel);
    
            // 创建面板容器
            JPanel tablePanel = new JPanel();
            // 设置BorderLayout布局方式
            tablePanel.setLayout(new BorderLayout());
            // 创建表格
            JTable table = configTable();
            // 使用普通的中间容器添加表格时,表头 和 内容 需要分开添加
            tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);
            tablePanel.add(table, BorderLayout.CENTER);
            // 将容器放入taskPanel面板
            taskPanel.add(tablePanel);
    
            return tabbedPane;
        }
    
        private static JTable configTable() {
            // 创建 table
            JTable table = getTable();
            // 获取 model
            DefaultTableModel model = getTableModel();
            table.setModel(model);
            for (int i = 0; i < model.getRowCount(); i++) {
                // 获得表格的值
                String taskName = (String) model.getValueAt(i, 0);
                // 设置表格的值
                model.setValueAt(taskName + "执行时间:" + i + "分钟后", i, 2);
            }
            int[] columnWidth = {135, 165, 350, 150, 150, 100};
            for (int i = 0; i < columnWidth.length; i++) {
                // 设置表格各栏各行的尺寸
                table.getColumnModel().getColumn(i).setPreferredWidth(columnWidth[i]);
            }
            return table;
        }
    
        private static JTable getTable() {
            JTable table = new JTable() {
                @Override
                public void updateUI() {
                    // 刷新
                    super.updateUI();
                    // 表格行高
                    setRowHeight(36);
                }
    
                @Override
                public boolean isCellEditable(int row, int column) {
                    // 第3列、第4列设置可以编辑,其余列不可编辑
                    if (column != 4 && column != 5) {
                        return false;
                    }
                    return true;
                }
            };
            // 设置表头不可移动
            table.getTableHeader().setReorderingAllowed(false);
            // 一次只能选择一项
            table.setSelectionMode(1);
            return table;
        }
    
        private static DefaultTableModel getTableModel() {
            int rowCount = 4;
            Object[] columnNames = {"任务名称", "执行规则", "任务执行时间", "状态", "操作", "SQL"};
            Object[][] rowData = new Object[rowCount][columnNames.length];
            // 向表格中填充数据
            for (int i = 0; i < rowCount; i++) {
                for (int j = 0; j < columnNames.length; j++) {
                    switch (j) {
                        case 0:
                            rowData[i][j] = "任务" + i;
                            break;
                        case 1:
                            rowData[i][j] = "0 0 0/" + i + " * * ? ";
                            break;
                        default:
                            rowData[i][j] = null;
                    }
                }
            }
            return new DefaultTableModel(rowData, columnNames);
        }
    
    
        private static void buildFrame(JComponent component) {
            // 窗体容器
            JFrame frame = new JFrame("数据同步工具");
            frame.add(component);
            //  JFrame.EXIT_ON_CLOSE  退出
            //  JFrame.HIDE_ON_CLOSE  最小化隐藏
            frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
            // 设置布局
            frame.getContentPane().setLayout(new BorderLayout());
            frame.getContentPane().add(BorderLayout.CENTER, component);
            // 设置窗口最小尺寸
            frame.setMinimumSize(new Dimension(1060, 560));
            // 调整此窗口的大小,以适合其子组件的首选大小和布局
            frame.pack();
            // 设置窗口相对于指定组件的位置
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            // 设置窗口尺寸是否固定不变
            frame.setResizable(true);
        }
    
    }

    执行结果:

  • 相关阅读:
    Enterprise Library系列文章回顾与总结
    .NET设计模式系列文章
    从Google趋势看.NET下的Ajax框架
    Atlas学习手记(18):使用DragPanel实现拖放面板
    Atlas学习手记(2):全面了解ScriptManager
    .NET设计模式(17):命令模式(Command Pattern)
    Atlas学习手记(3):由UpdatePanel开始
    Atlas学习手记(16):使用PasswordStrength检测密码强度
    Atlas学习手记(17):使用FilteredTextBox过滤字符
    用Windows Live Writer在博客园发布Post
  • 原文地址:https://www.cnblogs.com/adao21/p/13295051.html
Copyright © 2020-2023  润新知