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

使用数据库中的数据禁用JTable中的特定行

许鸿志
2023-03-14

我想知道是否可以使用我的数据库中的数据将JTable中的一些行灰化或呈现为不可见?

以下是我的JTable中的列:

public DutyModel(ArrayList<Duty> listOfObjects) {
        rowCount = listOfObjects.size();
        colCount = columnNames.length;
        data = new Object[rowCount][colCount];
        for (int i = 0; i < rowCount; i++) {
            /* Copy an ArrayList element to an instance of MyObject */
            Duty d1 = (Duty) (listOfObjects.get(i));

            data[i][0] = d1.getDutyId();
            data[i][1] = d1.getDutyName();
            data[i][2] = d1.getDutyDesc();
            data[i][3] = d1.getDutySectorName();
            data[i][4] = d1.getDutyStatus();
        }
    }

显示“我的表格”时,我希望行带有d1。getDutyStatus(),其中dutyStatus=“Inactive”将灰显。我的表格当前可以更新为“活动”(按更新按钮)或“非活动”(按删除按钮)。我不希望用户能够编辑dutyStatus为“Inactive”的任何职责。非常感谢您的任何帮助。谢谢

下面的代码是当用户选择JTable中的一行并按下“Update”和“Delete”按钮时发生的情况。另外,我尝试使用一个三层架构来运行我的代码,我的控制器类是RetrieveDutyControl,实体是Duty。

public void actionPerformed(ActionEvent e) {
            int rowSelected = tblDutyList.getSelectedRow();
            if (rowSelected >= 0) {
                String idDuty = tblDutyList.getValueAt(rowSelected, 0)
                        .toString();
                String name = tblDutyList.getValueAt(rowSelected, 1)
                        .toString();
                String desc = tblDutyList.getValueAt(rowSelected, 2)
                        .toString();
                String sector = tblDutyList.getValueAt(rowSelected, 3)
                        .toString();
                String status = tblDutyList.getValueAt(rowSelected, 4)
                        .toString();
                Duty duty = new Duty(Integer.parseInt(idDuty), name, desc,
                        sector, status);
                RetrieveDutyControl rdc = new RetrieveDutyControl();
                ArrayList<Duty> dutyList = rdc.processRetrieveDuties(duty);

                JPanel contentPane = new RemoveDutyForm(myFrame, duty);
                myFrame.getContentPane().removeAll();
                myFrame.setContentPane(contentPane);
                myFrame.setVisible(true);
            } else {
                JOptionPane.showMessageDialog(null, "No Record Selected",
                        "Alert", JOptionPane.ERROR_MESSAGE);
            }

共有1个答案

薛墨一
2023-03-14

尝试使用重写的prepareRenderer()方法根据数据灰显行

示例代码:(使用第一列的值进行验证)

Object[] columnNames = { "A", "B", "C", "D" };
Object[][] data = { 
        { "abc", new Double(850.503), 53, true },
        { "lmn", new Double(36.23254), 6, false }, 
        { "pqr", new Double(8.3), 7, false },
        { "xyz", new Double(246.0943), 23, true } };

JTable table = new JTable(data, columnNames) {
    @Override
    public java.awt.Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
        java.awt.Component comp = super.prepareRenderer(renderer, row, col);
        Object value = getModel().getValueAt(row, 0);
        if (value.equals("lmn")) {
            comp.setBackground(Color.lightGray);
        }  else {
           comp.setBackground(Color.white);
        }
        return comp;
    }
};

对于按钮,检查值,什么也不做。

如何获取所选行的值?

if(table.getSelectedRow()!=-1){
    int rowIndex=table.getSelectedRow();
    Object value=table.getModel().getValueAt(rowIndex, 0);
    if(value.equals("lmn")){
        //do nothing
    }else{
        // perform desired operation
    }
}
 类似资料:
  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 问题内容: 我正在使用jdbc编写程序,该程序将成为数据库的接口(类似于CRUD应用程序)。我假设我必须编写一个类(例如),该类将对数据库执行所有操作(以及可能会简化为这些操作的某些其他逻辑)。用户界面由一组表和一些按钮组成。要使用Jtable,我需要实现一个类(例如),它是AbstractTableModel的子类。因此,此类将向用户显示我的数据。我需要为数据库架构中的所有表实现这种模型。我不想

  • 我还是MySQL的新手,甚至比MySQLI更新。我试图用MySQLI更新我的网站,但我似乎无法解决最后一个问题。 我的网站是一个单页网站,页面上有50个类别。每个类别都有一个类别标题。我在数据库中有一个表,其中包含所有50个类别的标题和id。我使用MySQL/PHP在每个类别的顶部显示每个类别的标题,具体选择行和列。这是我的代码... 查询: 回声声明: 这允许我选择要显示的行和列。 我如何在My

  • 我在NetBeans IDE中工作,语言是Java,主要的类是JFrame Form。 我需要从Jtable获取所有数据并用这些数据填充数组。数组代表矩阵。 代码如下 我有一个错误 线程“AWT-EventQueue-0”java.lang.ClassCastException:java.lang.String无法转换为java.lang.Double 所以将表中的元素设置为双精度不是那么容易吗?

  • 我正在开发一个社交网络应用程序,用户可以关注其他用户,喜欢他们的帖子、评论。。。当某个用户跟踪某人时,它会在另一个用户帐户的通知片段中显示,通知他有一个新的跟踪者。问题是,当用户点击unfollow时,我无法删除通知。以下是我尝试过的: 下面是我添加通知的方式: 我的代码的问题是,每当用户取消关注某人时,该用户的所有通知都会被删除,包括他的喜欢和评论。我想要的是删除“开始关注你”。以下是它在Fir