temz 2023-02-25 21:11 采纳率: 100%
浏览 108
已结题

java swing Jcombox

Java swing中根据Jcombobox中选项显示Jtable中的项目,在数据库更新的时候,比如增加一行时,jcombobox的选项也要有更新,Jtable中是mysql中的数据。

比如mysql数据库有表table ,表中元素为id,ip地址,数据,等,id是主键。ip地址可能有重复的

img

要求能根据ip地址中设置Jcombobox项目,在这里jcombobox项目就应该是

显示全部
192.168.0.1
192.168.0.2
192.168.0.3
四项,没有重复项,选中其中一项后从数据库调出所有相同的行并显示在Jtable,比如选中192.168.0.1就将id为1和2的两行放入Jtable。
当数据库更新增加了192.168.0.4时,Jcombobox也要增加选项192.168.0.4,并且点击可以显示ip地址为192.168.0.4的项目

  • 写回答

9条回答 默认 最新

  • 喊你敲代码 2023-02-25 22:43
    关注

    供参考:

    import java.awt.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    
    public class ComboBoxTable extends JFrame {
        private JComboBox<String> comboBox;
        private JTable table;
        private DefaultTableModel tableModel;
        private Connection connection;
        private Statement statement;
        private ResultSet resultSet;
    
        public ComboBoxTable() {
            super("ComboBox Table");
    
            // 创建连接数据库的代码
            try {
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
                statement = connection.createStatement();
                resultSet = statement.executeQuery("SELECT DISTINCT ip FROM table");
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Unable to connect to database: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                System.exit(1);
            }
    
            // 创建选项框
            comboBox = new JComboBox<>();
            comboBox.addItem("All");
            try {
                while (resultSet.next()) {
                    String ip = resultSet.getString("ip");
                    comboBox.addItem(ip);
                }
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Unable to read data from database: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                System.exit(1);
            }
    
            // 创建表格
            table = new JTable();
            tableModel = new DefaultTableModel();
            tableModel.addColumn("ID");
            tableModel.addColumn("IP");
            tableModel.addColumn("Data");
            table.setModel(tableModel);
    
            // 将选项框和表格放入面板中
            JPanel panel = new JPanel(new BorderLayout());
            panel.add(comboBox, BorderLayout.NORTH);
            panel.add(new JScrollPane(table), BorderLayout.CENTER);
    
            // 将面板添加到窗口中
            getContentPane().add(panel);
    
            // 注册选项框的事件处理程序
            comboBox.addActionListener(e -> {
                String selectedItem = comboBox.getSelectedItem().toString();
                try {
                    if (selectedItem.equals("All")) {
                        // 如果选中“全部”选项,则显示所有行
                        resultSet = statement.executeQuery("SELECT * FROM table");
                    } else {
                        // 否则,只显示与选中的IP地址相同的行
                        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM table WHERE ip = ?");
                        preparedStatement.setString(1, selectedItem);
                        resultSet = preparedStatement.executeQuery();
                    }
    
                    // 清空表格
                    tableModel.setRowCount(0);
    
                    // 将结果集中的行添加到表格中
                    while (resultSet.next()) {
                        int id = resultSet.getInt("id");
                        String ip = resultSet.getString("ip");
                        String data = resultSet.getString("data");
                        tableModel.addRow(new Object[]{id, ip, data});
                    }
                } catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "Unable to read data from database: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                }
            });
    
            // 设置窗口大小、可见性和关闭操作
            setSize(500, 300);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
    
        public static void main(String[] args) {
            new ComboBoxTable();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月2日
  • 已采纳回答 2月27日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 arcgis中更新地理配准后几个图层分离怎么解决?
  • ¥15 想请教大家关于机器学习的问题
  • ¥15 虚幻UE保存Actor位置失败
  • ¥15 多个.nii合并为.nii.gz格式
  • ¥50 现在需要统计2023年全年 “签收时间(qssj)” 到 “提交时间(tjsj)” 小于半小时的业务量,但是要排除掉周末的时间,同时还要排除中午休息的时间。
  • ¥50 opencv模板匹配为何图像差别大仍然匹配数值高?
  • ¥15 如何成功完成主菜单和分菜单的代码编程C++
  • ¥15 怎样采集或者其它途径拿到全国最新个体工商户数据
  • ¥20 我是一名大学生,想学习java是自学还是报培训班呢
  • ¥15 pycharm该如何爬取网易云歌曲下的评论?