java - jTable 将数据输入到列中

标签 java sql swing for-loop jtable

我有一个 jTable,用于输入学生考试成绩。当我在“分数”列中输入分数时,它会根据输入的分数自动检查成绩并将其放入下一列(即“成绩”)同一行。效果很好。当您有多行输入标记时,就会出现问题。我们假设有三名学生输入分数,如果您在最后一行输入分数(学生在表中排在最后),成绩将不会更新。您必须按从上到下的顺序来更新 Grade 。帮我解决这个问题。谢谢。这是我的代码:

 for (int i = 0; i < jTable1.getRowCount(); i++) {
if(!(jTable1.getValueAt(i, 2).toString().equals(""))){
if(!(Integer.parseInt(jTable1.getValueAt(i, 2).toString())>100)){
        String mark = jTable1.getValueAt(i, 2).toString();
        int mk = Integer.parseInt(mark);
        if (mk >= 75) {
            jTable1.setValueAt("A", i, 3);
        } else if (mk < 75 && mk >= 65) {
            jTable1.setValueAt("B", i, 3);
        } else if (mk < 65 && mk >= 55) {
            jTable1.setValueAt("C", i, 3);
        } else if (mk < 55 && mk >= 35) {
            jTable1.setValueAt("S", i, 3);
        } else{
        jTable1.setValueAt("F", i, 3);
        }}}

最佳答案

我会使用CellRenderer来实现这一点。像这样的东西。您可以扩展 DefaultTableCellRenderer 实现

public class MarkCellRenderer extends DefaultTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        Component c = super.getTableCellRendererComponent(jTable, value, isSelected, hasFocus, row, column);
        if (c instanceof JLabel) {
            JLabel label = (JLabel) c;
            label.setHorizontalAlignment(JLabel.RIGHT);
            Integer mk = Integer.parseInt(value.toString());//this is not very clean
            String text= null;
            if (mk >= 75) {
               text="A";
            } else if (mk < 75 && mk >= 65) {
               text="B";
            } else if (mk < 65 && mk >= 55) {
               text="C";
            } else if (mk < 55 && mk >= 35) {
               text="S";
            } else{
                text="F";
            }
            label.setText(text);
    }
        return c;
    }
}

你设置就像

myTable.getColumnModel().getColumn(2).setCellRenderer(new MarkCellRenderer());

关于java - jTable 将数据输入到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20424850/

相关文章:

java - 如何通过 JList 中的索引编辑元素?

Java访问框架

java - 为什么G1垃圾收集器在完整垃圾收集中使用单线程?

不支持 ODBC 或 MSSQL 的 PHP 到 SQL Server

sql - 分布式连接两个表

mysql - 将 MS-SQL Server 存储过程转换为 MySQL 查询

java - Swing 重画问题

java - 注册页面、Toast 和 Firebase

java - 如何声明方法的返回值?

java - MVC - 我如何理解它? ( java )