gpt4 book ai didi

java - jTable 将数据输入到列中

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:39 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com