我一直在阅读类似于我的帖子,并阅读Java教程页面,但我似乎无法让这个工作.我不确定我是否遗漏了一些基本的东西......
我有一个自定义表模型,我需要能够从中删除行.该表初始化为空,并通过组合框和添加按钮添加行.还有一个删除按钮,需要从表中删除所选行.
class TableModel extends AbstractTableModel
{
private String[] columnNames = {"Enabled", "Value" };
protected Class[] columnClasses = new Class[] { Boolean.class, String.class };
public int getColumnCount() { return columnNames.length; }
public int getRowCount() { return filters.size(); }
public String getColumnName(int col) { return columnNames[col]; }
public Class getColumnClass(int col) { return columnClasses[col]; }
public Object getValueAt(int row, int col) { ... }
public void setValueAt(Object value, int row, int col) { ... }
public void addRow(String value) …Run Code Online (Sandbox Code Playgroud) 我已经被分类AbstractTableModel用作我的模特JTable.每当数据被添加到我fireTableRowsInserted()在AWT线程中调用时.通过使用synchronized方法,可以对我的基础容器进行所有访问.
到目前为止,这种模式对我来说一直很好.但是现在我想从列表中删除数据我已经意识到我有一个线程问题.如果我删除一行并fireTableRowsDeleted()在AWT线程中调用,我仍然可以调用getValueAt()现在不再存在的行索引.
在AWT线程之外的表模型上执行操作的最佳实践是什么?
在我的应用程序中有一个JTable,我想在创建表后插入行.
以下所有代码都在框架的构造函数中.
码:
private TableModel model = new AbstractTableModel(){
String[] columnNames = {"First Name","Last Name","Sport","# of Years","Vegetarian"};
private Object[][] data = {};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public boolean isCellEditable(int row, int col) {
retuen false;
}
public Class getColumnClass(int c) {
return getValueAt(0, …Run Code Online (Sandbox Code Playgroud) 我有一个应该从文件和显示中读取的表,可以从表和文件中删除行.
但不行!我的代码:
public class Readuser_A extends AbstractTableModel {
String[] columns = { "Fname", "Lname", "Gender", "Date", "ID" };
ArrayList<String> Listdata = new ArrayList<String>();
String[][] Arraydata;
public Readuser_A() {
try {
FileReader fr = new FileReader("AllUserRecords.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
Listdata.add(line);
}
br.close();
Arraydata = new String[Listdata.size()][];
for (int i = 0; i < Listdata.size(); i++) {
Arraydata[i] = Listdata.get(i).split(" ");
}
} catch (IOException e) {
}
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我有一个 JTable,显示来自允许整数值 0、1 和 2 的模型的值。这些值显示在 9 x 9 网格中(就像数独游戏板)。
我的问题是:如何从 GUI 中隐藏零值?
也就是说,在模型值为零的表格单元格中,我不希望 GUI 显示任何值。然而,由于正在进行计算,模型必须包含零值。
我尝试使用 DefaultTableCellRenderer 并使用 setVisible(true) 将单元格组件设置为不可见(如本问题所示),但没有得到任何结果。
我已设法使用 DefaultTableCellRenderer 根据模型状态切换任何单元格的背景颜色(如果单元格被视为“负”)。我确实想让背景颜色保持可见。
我对java有点陌生,所以也许这只是一个更新问题?
这是我的 DefaultTableCellRenderer:
private static class GameTableRenderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
GameModel model = (GameModel) table.getModel();
if(model.isNegative(row, column)) …Run Code Online (Sandbox Code Playgroud) 我正在为我的朋友开发一个软件.我开发了90%的项目,我的问题是我有一个表格,我在数据库中填充数据.我使用自定义表格模型来填充jtable.它完全填充数据,但问题是它不包含正确的列标题,而不是包含列标题的A,B,C.
这是我的自定义表模型类.
public class SellUpdateModel extends AbstractTableModel
{
private Vector<Vector> data;
public SellUpdateModel(String Jid)
{
data = new Vector<>();
data = new JobDetailsDAO().get_ItemDescriptionAndQuantity(Jid); //Retrive data from databse and fill it to vector.
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return false; // does not allowed to edit cells
}
@Override
public int getRowCount()
{
return data.size();
}
@Override
public int getColumnCount()
{
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
return data.elementAt(rowIndex).elementAt(columnIndex);
}
public SellUpdateModel …Run Code Online (Sandbox Code Playgroud) 我正在尝试在按钮被操作时查看Jtable中的表.我将表保存在二维数组中并且我实现了TableModel类但没有工作.我没有得到错误但是表没有出现.我错过了什么?
这是我的代码:
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
class MyTableModel extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
private ArrayList<ArrayList<Object>> list = new ArrayList<ArrayList<Object>>();
ResultSet rs;
@Override
public int getColumnCount() {
try {
ResultSetMetaData rsmd = rs.getMetaData();
return rsmd.getColumnCount();
} catch (SQLException e) {
// TODO Auto-generated catch block
return -1;
}
}
@Override
public int getRowCount() {
try {
int rowCount = 0;
while (rs.next())
rowCount++;
return rowCount;
} catch …Run Code Online (Sandbox Code Playgroud) 我有一个JTable.此表使用我设计的自定义模型; 自定义模型是extends AbstractTableModel.我有一个按钮,用户可以删除选定/突出显示的行.
我试过这段代码,但它给了我一个类强制转换异常 -
myTableModel cannot be cast to DefaultTableModel.
Run Code Online (Sandbox Code Playgroud)
下面是代码.
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(table.convertRowIndexToModel(table.getSelectedRow()));
model.fireTableDataChanged();`
Run Code Online (Sandbox Code Playgroud)
我在网上搜索过,但它总是DefaultTableModel- 但我有AbstarctTableModel.
我们如何解决这个问题?
HY.我正在尝试使用AbstractTableModel构建一个简单的JTable,但即使我使用了JScrollPane,列名也不会出现.
public class TableModel extends AbstractTableModel{
private String[] columnNames = new String[]{"#","Name","Price","Quantity","Description"};
public TableModel() {
super();
System.out.println("constructor");
}
public int getColumnCount() {
return 0;
}
public int getRowCount() {
return 0;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}
public String getColumnName(int columnIndex) {
System.out.println("in");
return columnNames[columnIndex];
}
}
Run Code Online (Sandbox Code Playgroud)
我按以下方式将表格放在JPanel上:
table = new JTable(new TableModel());
add(new JScrollPane(table));
Run Code Online (Sandbox Code Playgroud)
不调用方法getColumnName.为什么?
我有一些数据从我的数据库加载并存储在另一个类中作为公共静态列表,我无法访问我的数据在MyTableModel类中存储并在jtable中查看它们...还有很多其他方法存在用我的数据填表,但他们没有给我一个列复选框...我该怎么办?
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"UserName","Admin","Blocked"};
private Object[Size][3] data;
//size is an variable thing witch i get it from db,uses as number of the row;
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) { …Run Code Online (Sandbox Code Playgroud)