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);
    }

}

執行結果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM