【问题标题】:Populate JTable Rows to JTextFields in Java from mysql从 mysql 将 JTable 行填充到 Java 中的 JTextFields
【发布时间】:2015-06-17 16:54:21
【问题描述】:

当我单击 JTable 上的特定行时,我在填充 JTextfields 时遇到问题。当我单击 JTable 中的一行时,JTextfields 不会填充它们各自的值。请帮忙。谢谢。

我的代码:

scrollPane = new JScrollPane();
    scrollPane.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {

            int row = table.getSelectedRow();
            String tbl_click = (table.getModel().getValueAt(row, 0).toString());

            try{
                String sql = "SELECT * FROM employee where EmployeeID = '"+tbl_click+"' ";
                stt = con.prepareStatement(sql);
                rs = stt.executeQuery();


                if(rs.next()){
                    int ids = rs.getInt("EmployeeID");
                    id.setText(String.valueOf(ids).trim());

                    String fn = rs.getString("FirstName");
                    fname.setText(fn);

                    String ln = rs.getString("LastName");
                    lname.setText(ln);
                }

                stt.close();

            }catch(Exception e1){
                e1.printStackTrace();
            }

        }
    });
    scrollPane.setBounds(312, 277, 551, 246);
    frame.getContentPane().add(scrollPane);

    table = new JTable();
    scrollPane.setViewportView(table);
    table.setModel(DbUtils.resultSetToTableModel(rs));

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。硬编码一些数据以替换数据库。 2) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
  • 呃..你明白我的问题了吗?
  • “你明白我的问题了吗?” 我明白你的代码问题(你忘了问问题)。看到 MCVE 后,我会进一步考虑答案。投票结束。
  • 投票结束?大声笑!如果您无法提供帮助,请将您的 cmets 留给自己。我不知道我错过了什么,你在谈论 MCVE 或其他什么。我有一个问题,所以我在论坛上发布了它,试图获得更好的洞察力。谢谢
  • 问自己这个问题。 DbUtils.resultSetToTableModel(rs)MouseListenerrs的版本有什么关系。我对JScrollPane 上的MouseListener 也有点奇怪,因为它不太可能被触发

标签: java mysql swing jtable jtextfield


【解决方案1】:

MouseEvents 就像雨滴一样,它们从上到下穿过组件层次结构,直到碰到正在监视它们的东西,然后它们停止。

问题的可能原因是JTable,它位于JScrollPane 中,将阻止JScrollPane 收到任何MouseEvents 的通知。

我“猜测”您需要将 MouseListener 添加到 JTable 中。事实上,我可能会使用ListSelectionListener,通过ListSelectionModel 行来代替

【讨论】:

  • 是的.. 当我右键单击我的 JTable 组件时,我用 JScrollPane 包围它。现在当我右键单击添加事件处理程序时,它只会将我定向到 JScrollPane 事件处理程序.没有选择 JTable MouseListener 的选项。你有什么建议?
  • 例如?给我一份样品
  • 我已经删除了 ScrollPane.. 在这里查看我的更新代码 pastebin.com/H6SU0W2u 但是,标题不再可见:(如何实现它以使其显示?
  • 您不想删除JScrollPane,只想将MouseListener 添加到JTable
猜你喜欢
  • 1970-01-01
  • 2010-09-22
  • 2016-05-25
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多