- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 OrderEntry
对象的 ArrayList
。每个对象都有:
public class OrderEntry
{
private int quantity;
private String itemName;
private float rate;
private float value;
}
事情是,我有一个 JButton
,当我单击此按钮时,我希望每个对象的值位于一行 4 列中。
我是 Swing 和 JTable/TableModel
的新手,有人可以帮我举个例子吗?
最佳答案
创建一个表模型来保存订单 - 执行 TableModel 。然后在表中设置模型。这是一个好的开始 - How to Use Tables教程。下面的示例演示了 AbstractTableModel
的非常基本的扩展。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
public class OrderEntryTable {
public OrderEntryTable() {
JFrame frame = new JFrame("OrderEntryTable");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final OrderEntryModel model = new OrderEntryModel();
JTable table = new JTable();
table.setModel(model);
JScrollPane scrollPane = new JScrollPane(table);
JPanel content = new JPanel(new BorderLayout());
content.add(scrollPane, BorderLayout.CENTER);
JButton button = new JButton("Add order entry");
content.add(button, BorderLayout.SOUTH);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addOrderEntry(new OrderEntry(3, "name", 0.5f, 1.0f));
}
});
frame.add(content);
frame.pack();
frame.setVisible(true);
}
public class OrderEntryModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<OrderEntry> orders = new ArrayList<OrderEntry>();
public OrderEntryModel() {
//TODO - setup orders
}
public void addOrderEntry(OrderEntry entry) {
orders.add(entry);
int lastRow = orders.size() - 1;
fireTableRowsInserted(lastRow, lastRow);
}
@Override
public int getRowCount() {
return orders.size();
}
@Override
public int getColumnCount() {
return 4;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
OrderEntry entry = orders.get(rowIndex);
switch (columnIndex) {
case 0:
return entry.getQuantity();
case 1:
return entry.getItemName();
case 2:
return entry.getRate();
case 3:
return entry.getValue();
}
return null;
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Quantity";
case 1:
return "ItemName";
case 2:
return "Rate";
case 3:
return "Value";
}
return null;
}
}
public class OrderEntry {
private int quantity;
private String itemName;
private float rate;
private float value;
public OrderEntry(int quantity, String itemName,
float rate, float value) {
super();
this.quantity = quantity;
this.itemName = itemName;
this.rate = rate;
this.value = value;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public float getRate() {
return rate;
}
public void setRate(float rate) {
this.rate = rate;
}
public float getValue() {
return value;
}
public void setValue(float value) {
this.value = value;
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new OrderEntryTable();
}
});
}
}
关于java - 如何使用 TableModel 将 java ArrayList 对象(每个对象包含 {int,String,float,float})添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465558/
我正在寻找类似于Java Swing TableModel的JavaScript MVC表格小部件 我还想要两种模型,一种完全本地的,一种远程的(XMLHttpRequest) 我还希望 View 接
我正在尝试创建一个类似于下面的模型的 JTable: 绿色角基本上是红色列标题和行标题的缓冲区空间。单元格不需要渲染成图中的颜色;但是,它们需要与表中其他“白色”单元格区分开来。 该表也不可编辑或选择
更新: 我找到了 @MadProgrammer 的答案,它成功了! Updating JTable on button click 基本上,您将一个refresh()方法添加到您的TableModel
在我的程序中,我希望在 JTable 中显示一些数据。我有一个包含数据的类,因此在 JTable 中呈现它的最简单方法似乎是扩展我的类,以便它实现 TableModel 接口(interface)并将
我有一个单独的类,它实现用于 JTable 的 TableModel 接口(interface)。我有一个 boolean 列,以一列复选框的形式呈现,我想知道如何通知外部对象某些值需要更新?如果我将
新手寻求帮助:-) 我正在开发一个小项目,以熟悉 Java 桌面开发和数据库连接。 所附代码在实例化后为我提供了一个空的 TableModel,因此 JFrame 中没有显示任何数据。测试类是使用 T
您可以创建表格模型并将其添加到表格中 TableModel tm = new TableModel(); JTable table = new JTable(tm); 但是,如果我初始化一个表 JTa
我正在将数据从 DAO 获取到 GUI 级别。 当我想加载表时,我得到一个空表,仅包含单击的数据库符号的正确行数: 加载我使用的元素: playlistTable.addMouseListener(n
在java swing表模型中,我们能够触发表更改、添加、删除等。我想知道如果组件不可见,这些方法调用是否会很昂贵? 例如,另一个窗口覆盖了它。或者它位于非 Activity 选项卡中。 最佳答案 为
我有一个用于存储数字的 JTable。我实际上只使用表格来查看/排序。即使某些列可能全部都是整数或长整型,为这些列提供 Double 类是否会导致失败(除了可能需要分配更多空间之外)。我可以解析这些数
我正在尝试获取 JTable 的已排序 TableModel,这是通过以下简单的 regex 标准完成的: try { TableRowSorter sortRow = new TableRo
在下面的示例中,一个窗口显示一个表格,其中包含窗口本身的宽度。调整窗口大小时,其宽度值反射(reflect)了当前的真实情况。 这怎么可能? Swing 如何通知表,它应该重新请求模型?或者模型正在接
我有一个使用 setAutoCreateRowSorter(true) 的 JTable 和一个附加的 RowSorterListener,如下所示,因为我需要在我的应用程序的其他地方对某种 JTab
我有课; public class A extends AbstractTableModel { ... } 我使用 ResultSetMetaData 构建 TableModel 以匹配数据库中的
我需要将繁重的数据集加载到 QTableView 中。数据集在内存中不小于 700Mb,我不想将其全部加载到内存中。 QSqlQueryModel 对我来说并不理想,原因有两个 - 它不可编辑,也不是
我的 TableModel实现通常位于 ArrayList以实现高效的随机访问性能。然而,ArrayList的 remove(int)实现看起来相当低效,因为它涉及制作 System.arrayCop
我有一个简单的 Java 桌面应用程序,它显示带有自定义 TableModel 的 JTable。 在 boolean 变量的基础上,我想显示一个具有不同列的表。但我无法做到这一点。 This is
我面临 JTable 和与其关联的 TableModel 的问题。这里的问题是,假设如果我在 JTable 上进行行选择,我想从 TableModel 获取特定的行对象并将其传递到某个地方。有谁知道如
我创建了一个包含人员列表的 JTable。一个 Person 总是可以包含另一个 Person(或者可能是它自己)。因此,用户可以单击该列,然后会出现一个 JComboBox。此 JComboBox
我有一个jTable,它根据一些jComboBox加载搜索结果。我使用 DefaultTableModel 来实现此目的,对于其他 jTable,我使用 TableModel。 搜索后,jTable
我是一名优秀的程序员,十分优秀!