当前位置: 首页 > 知识库问答 >
问题:

禁用Java Netbeans中的JTable单元格

关项明
2023-03-14

我需要在Java NetBeans中的Jtable中的每个单元格中禁用双击编辑。JTable连接到sqlite数据库,并显示数据库表记录。

 private void DisplayTable() {
    try{
        Class.forName("org.sqlite.JDBC");
        Connection conn=DriverManager.getConnection("jdbc:sqlite:clientrec.sqlite");
        String sql = "SELECT * FROM client";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        t1.setModel(DbUtils.resultSetToTableModel (rs));
        
        } 
    catch (Exception e){
        JOptionPane.showMessageDialog(null, e);
    } finally{
        try{
            rs.close();
            pst.close();
        }
        catch(Exception e){
            
        }
    }
    
}

我还为jtable创建了onmouseclick事件,以便在Jtextfields、combobox、jcalendar中显示所选内容

      private void t1MouseClicked(java.awt.event.MouseEvent evt) {                                
            // TODO add your handling code here:
        DefaultTableModel model=(DefaultTableModel) t1.getModel();
        int number=t1.getSelectedRow();
        String tc=t1.getModel().getValueAt(number, 0).toString();
    try{
        Class.forName("org.sqlite.JDBC");
        Connection conn=DriverManager.getConnection("jdbc:sqlite:clientrec.sqlite");

        String sql = "SELECT * FROM client WHERE ID="+tc+"";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        if(rs.next()){
        String id=rs.getString("ID");        
        String fullname=rs.getString("FullName");
        String phone=rs.getString("Phone");
        String allergy=rs.getString("Allergy");
        String date=rs.getString("Date1");
        String budgetpayed=rs.getString("BudgetPayed");
        String totalbudget=rs.getString("TotalBudget");
        String budgetleft=rs.getString("BudgetLeft");
        String currency=rs.getString("Currency");
        String datea=rs.getString("Dateappointment");
        String description=rs.getString("Description");
        
        FullName.setText(fullname);
        Phone.setText(phone);
        Allergy.setText(allergy);
        ((JTextField)Date1.getDateEditor().getUiComponent()).setText(date);
        BudgetP.setText(budgetpayed);
        TBudget.setText(totalbudget);
        BudgetL.setText(budgetleft);
        Curr.setSelectedItem(currency);
        ((JTextField)Date2.getDateEditor().getUiComponent()).setText(datea);
        Desc.setText(description);
        }

    }catch (Exception ex){
        JOptionPane.showMessageDialog(null, ex);
    }
}

共有1个答案

李安歌
2023-03-14

重写JTableiscelleditable(...)方法:

JTable table = new JTable(...)
{
    @Override
    public boolean isCellEditable(int row, int column)
    {
        return false;
    }
};
 类似资料:
  • 问题内容: 我有一个JTable,我想用自定义渲染器尝试检查isEnabled()的所有禁用的复选框单元变灰,然后更改背景颜色,但仍然无法使用。有什么建议么?谢谢!!! 问题答案: 如“ 概念:编辑器和渲染器 ”中所述,“通常使用单个单元格渲染器来绘制包含相同类型数据的所有单元格。” 您需要维护表模型中的enabled状态。 附录:作为一个具体示例,此示例中的数据模型是一组简单的Date实例。ge

  • 问题内容: 我应该如何禁用只一列拖动JTable?我想允许其他列拖动,但只允许第一列(索引为0)。谢谢。 问题答案: 您应该能够创建自己的(扩展DefaultTableColumnModel),并且应该重写为仅在允许拖动列时调用。

  • 问题内容: 我不知道如何对齐JTable中单元格的值。 例如,Jtable显示姓名工资X.先生100000.50 XXXX 234.34 YYYy 1205.50 我想以以下格式对齐“薪水”。 如何在JTable上方对齐 问题答案: 无需为此创建自定义类,只需使用默认渲染器即可: 或者更好的方法是在表中实际存储Double值,然后使用适当的数字渲染器,数字渲染器将自动右对齐。然后,您可以使用表格格

  • 我有一个JTable对象,我会在一个列上添加5个不同的JComboBox。 我已经尽力了: 但这会将相同的JComboBox添加到该列的所有单元格中。如何在同一列中添加不同的内容? 非常感谢。

  • 问题内容: 我有我的自定义单元格渲染器,想删除单元格的边框。 我该怎么做?我试过setBorder,但是不起作用。 这是我的渲染器代码: 问题答案: 单元格之间绘制的线不是单元格本身的一部分。它们是由桌子绘制的。您可以使用以下方法在整个表格中将其关闭: 要仅禁用水平或垂直线: 或者,您可以使用以下方法更改线条的颜色:

  • 问题内容: 我有此代码从如何突出显示jtable中的多个单元格: 但是,当我用它突出显示一个单元格时,它会执行错误的操作,就像丢失整个数据一样。Iam是Java Swing的新手。请帮助使单元格在按钮按下动作事件中突出显示。 更新:添加我的示例代码: 我想要的是单击按钮,我只想突出显示单元格编号1(Row1-Column1)。 问题答案: 我使用此类来设置JTables的样式 创建此类的实例,并将