我有一个类型模块的ArrayList,每个模块都有一个分配的arraylist.我写了下面的TableModel,但是当在表中选择了某些东西时,我遇到了问题,导致我的ArrayLists超出范围.这是我的桌子型号:
public class AssignmentsTableModel extends AbstractTableModel {
private ArrayList<Module> modules;
private static final String[] COLUMN_NAMES = {"Module Identifier", "Module Name", "Assignment Title", "Author", "Date Set", "Date Due", "Weighting"};
private int moduleID;
private int assignmentID;
private Module module;
private int totalNumberAssignments;
public AssignmentsTableModel(ArrayList<Module> modules) {
moduleID = 0;
assignmentID = 0;
this.modules = modules;
module = modules.get(moduleID);
totalNumberAssignments = getRowCount();
}
public AssignmentsTableModel(Module module) {
modules = new ArrayList<Module>();
modules.add(module);
}
@Override
public int getRowCount() {
int rowCount = 0;
for(Module …Run Code Online (Sandbox Code Playgroud) 在这里,我想使用构造函数动态分配表中的行数.datamodel是类,datamodel(int count)方法指定no.of行.
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial")
public class datamodel extends AbstractTableModel{
int row1;
datamodel(int count){
row1 = count;
count = 0;
}
private String[] columnNames = {"Sl No","Material Code", "Material Name", "Select", "Received QTY", "Unit", "To Be Delivered", "PO No", "PO Sl"};//new String[9];
//table has 100 rows and 9 columns
private Object[][] data = new Object[row1][9];
public int getColumnCount() { return columnNames.length; }
public int getRowCount() { return data.length;}
public String getColumnName(int col) {
// TODO Auto-generated method stub
return columnNames[col]; …Run Code Online (Sandbox Code Playgroud) 我正在使用java swing和NetBeans开发桌面应用程序它使用带有自定义表模型的jtable来呈现数据.我希望在表中显示最小行数,这样即使要显示的实际行数小于最小值,表也应显示其他虚拟行以构成最小数量.
下面是表模型的代码片段
public class MyTableModel extends AbstractTableModel {
private List<List<Object>> dataList = new ArrayList<>();
private String[] header = { "ID","SUBJECT","LETTTER FROM","LETTER DATE","DATE RECEIED",
"REMARKS","DATE DISPATCHED","DESTINATION OFFICE"};
public List<List<Object>> getDataList() {
return dataList;
}
public void setDataList(List<List<Object>> dataList) {
this.dataList = dataList;
fireTableDataChanged();
fireTableStructureChanged();
}
public void setHeader(String[] header) {
this.header = header;
}
public String[] getHeader() {
return header;
}
@Override
public int getRowCount() {
return dataList.size();
}
@Override
public int getColumnCount() {
return header.length;
}
@Override
public String …Run Code Online (Sandbox Code Playgroud) 我得到了以下代码,并且有这个错误(我试图保持代码尽可能短,忽略getColumnCount等函数只是构造函数):
下面的代码用于通过SQLite语句在Swing中创建JTable,我需要复选框的布尔值(是的,我知道我必须编辑/添加一个函数,但我想保持代码尽可能小).
码:
package view;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
import controller.Database;
class Test extends AbstractTableModel {
Database db = new Database();
ResultSet rs;
private String[] columnNames = {"Vorname", "Nachname", "E-Mail", "Anrede", "Jahrgang", "Ablösung", "Scheibe", "Waffe", "Gruppe", "Verpflegung", "Aktiv"};
Object[][] data;
public Test(){
int result = 0;
try {
rs = db.stat.executeQuery("select count(*) as schuetzencount from schuetze;");
result = Integer.parseInt(rs.getString("schuetzencount"));
data = new String[result][11];
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
rs …Run Code Online (Sandbox Code Playgroud) 我正在尝试为特定列设置渲染器,但不知何故此渲染器并未用于渲染该列。对此有什么解释吗?
tabledata = new LendDataTable();
table.setModel(tabledata);
TableColumn xx = table.getColumnModel().getColumn(3);
xx.setCellRenderer(new BookBackRenderer());//here it doesn't (there are 7 rows in total)
table.setDefaultRenderer(Integer.class, new BookBackRenderer());// here it works
add(table, BorderLayout.CENTER);
public class BookBackRenderer extends DefaultTableCellRenderer {
/**
*
*/
private static final long serialVersionUID = 1L;
public BookBackRenderer() {
// TODO Auto-generated constructor stub
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
System.out.println(column);
return super.getTableCellRendererComponent(table, value.toString() + "xy", isSelected, hasFocus, row, column);
} …Run Code Online (Sandbox Code Playgroud) 我有一个AbstractTableModel,像这样:
public class TableModelClienteFornecedor extends AbstractTableModel {
private List<ClienteFornecedorDTO> linhas;
private String[] colunas = new String[]{"Nome", "Conta"};
public TableModelClienteFornecedor() {
linhas = new ArrayList<>();
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
@Override
public Class getColumnClass(int column) {
return (getValueAt(0, column).getClass());
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
ClienteFornecedorDTO cf = linhas.get(rowIndex);
switch (columnIndex) {
case 0:
return cf.getNome();
case …Run Code Online (Sandbox Code Playgroud) 我需要一些getValue方法的帮助
我正在读取文件并将值存储在
public List<Object[]> students;
Run Code Online (Sandbox Code Playgroud)
现在我想将所有这些值添加到我的JTable中
@Override
public Object getValueAt(int row, int col) {
//return data[row][col];
// Here I have to get data from students
}
Run Code Online (Sandbox Code Playgroud)
通常从很多例子中我看到他们Object[][] data用来做这种事情,这可能是这样的
//return data[row][col];
Run Code Online (Sandbox Code Playgroud)
但是因为我从我想要的文件中读取 List<Object[]> students;
任何想法如何在getValueAt方法中实现它?
我的解决方案就是这个
@Override
public Object getValueAt(int row, int col) {
//return data[row][col];
for(Object[] j: students)
{
return j[col];
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但这只会占用第一个对象,并将分配给我的JTable中的所有行
我正在GUI为数据库创建一个项目,有两个类用于GUI's.连接器类用于连接用户凭据.如果凭据正确,则获取from中的所有数据AbstractTableModel.当程序先运行时GUI有一个按钮,我们在其中单击它并获取底层的所有数据TableModel.但我面临两个问题.在GUI2课堂上,有时它会像这样打开.
有时它显示这样
http://imageshack.com/i/p3gBDt9Ej
我不知道为什么会这样.第二个问题是当我们从表中选择任何行并单击DeleteSelectedRow按钮时它会删除该行.此按钮有一个ActionListener中GUI2类.但我想要的是我删除行时自动更新表.我怎样才能做到这一点?
第一课 GUI
public class Gui extends JFrame {
private static Connector conni;
private Connection conn = null;
private JButton bt;
private JPanel panel;
public Gui() {
super("Frame");
panel = new JPanel();
bt = new JButton("Connect to Database 'World'");
panel.add(bt);
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
conn = conni.Connector();
if (conn != null) {
dispose();
new …Run Code Online (Sandbox Code Playgroud)