gpt4 book ai didi

JAVA JTable 数据模型列名错误

转载 作者:行者123 更新时间:2023-11-29 05:15:20 24 4
gpt4 key购买 nike

我几乎有以下“示例”代码,但列名在大约 2 小时编码后消失了,我找不到位置。有人能告诉我为什么数据模型没有将列名添加到 JTable 中吗?

enter image description here我的代码:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

class MyTableModel extends JPanel {

private static final int CHECK_COL = 3;
private static Object[][] DATA = {
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false},
{"","","",false},{"","","",false},{"","","",false},{"","","",false}
};
public static String[] COLUMNS = {"Debtid","Nev","VHO", "Check"};
protected DataModel dataModel = new DataModel(DATA, COLUMNS);
private JTable table = new JTable(dataModel);
private DefaultListSelectionModel selectionModel;

public MyTableModel(){
super(new BorderLayout());
this.add(table);
this.add(new ControlPanel(), BorderLayout.SOUTH);
table.setPreferredScrollableViewportSize(new Dimension(250, 175));
selectionModel = (DefaultListSelectionModel) table.getSelectionModel();
}

private class DataModel extends DefaultTableModel {

public DataModel(Object[][] data, Object[] COLUMNS) {
super(data, COLUMNS);
}

@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == CHECK_COL) {
return getValueAt(0, CHECK_COL).getClass();
}
return super.getColumnClass(columnIndex);
}

@Override
public boolean isCellEditable(int row, int column) {
return true;
}

}

private class ControlPanel extends JPanel {

/**
*
*/
private static final long serialVersionUID = -7342459414751761853L;

public ControlPanel() {
this.add(new JLabel("Selection:"));
this.add(new JButton(new SelectionAction("Clear", false)));
this.add(new JButton(new SelectionAction("Check", true)));
}
}

private class SelectionAction extends AbstractAction {

boolean value;

public SelectionAction(String name, boolean value) {
super(name);
this.value = value;
}

@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < dataModel.getRowCount(); i++) {
if (selectionModel.isSelectedIndex(i)) {

dataModel.setValueAt(value, i, CHECK_COL);
}
}
}
}



public void setValueAt_Cell(String val, int row, int col) {
// TODO Auto-generated method stub
if(row==DATA.length){
DATA=cloneArray(DATA);
}
dataModel.setValueAt(val, row, col);
}

public static Object[][] cloneArray(Object[][] src) {
int length = src.length;
Object[][] target = new Object[length+1][src[0].length];
for (int i = 0; i < length; i++) {
System.arraycopy(src[i], 0, target[i], 0, src[i].length);
}
target[length] = new Object[]{"","","",false};
return target;
}

public String getValAtPos(int row,int col) {
//System.out.println(dataModel.getValueAt(row, col));
return dataModel.getValueAt(row, col).toString();
}

public int getRowCount(){
return DATA.length;
}
}

最佳答案

您需要用 JScrollPane 包装 JTable :this.add(new JScrollPane(table));

关于JAVA JTable 数据模型列名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759571/

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