- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的 Controller (从模型读取数据并将这些数据分配给类 View 中的 JTable 对象和 MedalTableModel 对象):
public class TableController {
private TableModel table_model;
private TableView table_view;
public TableController (TableModel table_model, TableView table_view) {
this.table_model = table_model;
this.table_view = table_view;
}
public void getMedalData () {
try {
table_model.getCsvData();
} catch (Exception e) {
e.printStackTrace();
}
}
public void setFilePath (String file_path) {
table_model.setFilePath(file_path);
}
/*
public void addLineData (ArrayList<String> data_list) {
Object[] line_data = new Object[data_list.size()];
for (int index = 0; index < data_list.size(); index ++) {
line_data[index] = data_list.get(index);
}
table_view.getTableModel().addRow(line_data);
}
*/
public void addTableData (String file_path) {
Object[] col_names = {"Country name", "Official medal ranking",
"GDP rank", "Pop rank", "Team size"};
setFilePath(file_path);
getMedalData();
int row_size = table_model.getRowSize();
int col_size = table_model.getColumnSize();
Object[][] table_data = new Object[row_size][col_size];
ArrayList<String> data_list = new ArrayList<String>();
for (int row_index = 0; row_index < row_size; row_index ++) {
data_list = table_model.getLineData(row_index);
for (int col_index = 0; col_index < col_size; col_index ++) {
table_data[row_index][col_index] = data_list.get(col_index);
}
}
//table_view.setTableData(table_data);
JTable temp_table = new JTable (table_data, col_names);
table_view.setTable(temp_table);
MedalTableModel temp_model = new MedalTableModel(table_data, col_names);
table_view.setTableModel(temp_model);
}
}
这是我的观点:
public class TableView extends JFrame{
//private DefaultTableModel def_model;
private MedalTableModel mtable_model;
private JTable medal_table;
private JButton close_button;
private TableRowSorter sorter;
private Object[][] table_data;
/*
public DefaultTableModel getTableModel () {
return def_model;
}
// maybe do not need this method
public void setTableModel (DefaultTableModel table_model) {
this.def_model = table_model;
}
*/
public TableView(String frame_title) {
super(frame_title);
medal_table = new JTable();
JScrollPane scroll = new JScrollPane(medal_table);
JPanel button_panel = new JPanel();
close_button = new JButton("Close");
button_panel.add(close_button);
getContentPane().add(scroll, BorderLayout.CENTER);
getContentPane().add(button_panel, BorderLayout.SOUTH);
pack();
}
public void setTableData (Object[][] table_data) {
this.table_data = table_data;
}
public Object[][] getTabledata () {
return table_data;
}
public MedalTableModel getTableModel () {
return mtable_model;
}
// maybe do not need this method
public void setTableModel (MedalTableModel table_model) {
this.mtable_model = table_model;
}
public void setTable (JTable table) {
this.medal_table = table;
}
public void setTableModel () {
//add data here
medal_table.setModel(mtable_model);
}
// set sort feature should be added after setModel
public void setSortMtd () {
//sorter = new TableRowSorter<DefaultTableModel>(def_model);
medal_table.setAutoCreateRowSorter(false);
TableRowSorter trs = new TableRowSorter(mtable_model);
class IntComparator implements Comparator {
public int compare(Object o1, Object o2) {
Integer int1 = (Integer)o1;
Integer int2 = (Integer)o2;
return int1.compareTo(int2);
}
public boolean equals(Object o2) {
return this.equals(o2);
}
}
trs.setComparator(1, new IntComparator());
trs.setComparator(2, new IntComparator());
medal_table.setRowSorter(trs);
medal_table.setModel(mtable_model);
}
}
这是我的 MedalTableModel 扩展了 DefaultTableModel;
public class MedalTableModel extends DefaultTableModel {
public MedalTableModel (Object[][] table_data, Object[] col_names) {
super(table_data, col_names);
}
public MedalTableModel() {
// TODO Auto-generated constructor stub
}
Class[] types = { String.class, Integer.class, Integer.class,
Integer.class, Integer.class };
//String[] ColumnName = {"Country name", "Official medal ranking",
// "GDP rank", "Pop rank", "Team size"};
@Override
public Class getColumnClass (int columnIndex) {
return this.types[columnIndex];
}
/*
@Override
public String getColumnName(int index) {
return ColumnName[index];
}
*/
/*
@Override
public Class getColumnClass(int col) {
//zero column accepts only String values
if (col > 0) {
return Integer.class;
}
else {
return String.class;
}
}
*/
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
}
这是主要方法(在另一个文件中):(初始模型、 Controller 和 View )
public static void main( String[] args ) {
SwingUtilities.invokeLater(new Runnable() {
public void run () {
String file_path = "London2012OlympicAlternativeMedalRankingsALL.csv";
TableModel table_model = new TableModel(file_path);
TableView table_view = new TableView("Medal Table");
TableController table_contrl = new TableController(table_model,
table_view);
table_contrl.addTableData(file_path);
table_view.setSortMtd();
table_view.setVisible(true);
table_view.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
//System.out.println( "Hello World!" );
}
问题是,当我尝试运行该程序时,它在 JFrame 中没有显示任何内容。我的代码有什么问题?非常感谢。
最佳答案
您从未真正在 JTable
上设置 TableModel
。您有一个似乎没有必要的变量,这可能就是为什么您没有在 JTable
对象上设置它并不明显的原因。
看起来你有一个设置它的方法:
public void setTableModel () {
//add data here
medal_table.setModel(mtable_model);
}
但该方法从未被调用。
关于java - 为什么 JTable 不显示 DefaultTableModel 中存储的任何数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682986/
我有一个 jTable,显示一个简单的两列 SQL 表的数据并允许用户维护该列表。这是我的第一个java程序。使其正常工作,以便用户可以编辑数据列表并按“保存”进行更新。我从这行代码获取 jTable
由于某种奇怪的原因,每次我在任何单元格中编辑数据并确认它时一旦我进入下一个,它就会从之前编辑的单元格复制数据 有什么想法吗? public class CheckoutTableModel exten
我有3个类(class) 首先从数据库获取数据 第二个为共同作品 其他用于展示表。 public class TableContent { private final Vector headers;
我的 DefaultTableModel 有问题,它不会向我显示表中的列,有一部分代码: JTable table = new JTable() { public boolean is
我有这个测试文件 text_file我的 TableView 是 enter image description here我想将每一行与每一列相匹配(第一行-第一列,第二行-第二列,等等。)错误在哪里
如何在 DefaultTableModel dtm = new DefaultTableModel(); 上添加标题和数据而不放置 new DefaultTableModel(在此内部)?我尝试使用
我的 Java GUI 中显示了一个表,用户可以通过单击“添加”按钮向其中添加行。添加到表格的行中的单元格默认都是可编辑的,用户可以根据需要选择每一行/单元格。 我现在想要添加从表中删除行的功能,但我
我有数据关系 Person-Attends-Course Person ------- id: integer primary key name: string prename: string age
我正在制作一个 GUI 简单的日历程序。我使用 DefaultTableModel 和 DefaultTableCellRenderer 显示日历的月 View 。我的日历设置为突出显示今天的日期。我
新数据输入数据库后,我的 JTable 没有刷新。我需要终止并再次执行才能看到结果。我包括了 DefaultTableModel 和 fireTableDataChanged。我还错过了什么?谢谢!
http://codepaste.net/ujhdq2 private Connection Econn; private DefaultTableModel examTable =
我使用 SwingWorker 根据数据库中的更改更改 DefaultTableModel。我的问题是:在 doInBackground() 中向 DefaultTableModel 添加 ListS
更新了问题,具体问题是数据没有显示,因为没有列: run: [java] Aug 04, 2014 8:17:00 PM net.bounceme.dur.client.gui.Applic
我一直在尝试将一些数据从 Editable JComboBox 发送到 JXTable。它的代码如下: private void selectTestActionPerformed(java.awt.
我有一个用 Object[][] 数组填充的 DefaultTableModel。 现在我想添加一个带有复选框的列并相应地执行操作。 当我将复选框添加到 Object[][] 数组并查看它时,我会显示
这个类与我的数据库通信检索数据并将它们投影到 JTable。我使用了 DefaultTableModel 但列名不会出现。我在另一个类中实例化这个类,我通过 检索包含数据的表获取表格()。 packa
我正在使用 Java Swingx 框架。我的 DefaultTableModel 对象中有 4 列。我只想显示其中 3 列。但是,我需要全部四个来进行计算。 实际数据模型 S.No. |身份证 |
我在 NetBeans 中使用 DefaultTableModel 来显示 MySQL 数据库中的记录。我的数据能够显示,但我想要的是在表格末尾显示一个复选框列。 我知道它需要被覆盖,但我不知道如何以
List myProducts = getMyProducts();//create an arraylist; Vector dataVector = new Vector(myProducts);
是的,我知道,这听起来很愚蠢。但在此之前,让我先说明一下我的问题。 我有一个带有大量 JTable 的 GUI。我有各种 DefaultTableModel,每个 JTable 一个。所以,1:1。对
我是一名优秀的程序员,十分优秀!