我一直在阅读类似于我的帖子,并阅读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) 我有一个函数触发:
public void tableChanged(TableModelEvent e){...}
Run Code Online (Sandbox Code Playgroud)
我从 TableModelEvent 得到了 TableModel :
TableModel model = (TableModel)e.getSource();
Run Code Online (Sandbox Code Playgroud)
但是我需要 JTable 才能在 TablecellBalloonTip 构造器中使用它。如何从 TableModel 中获取 JTable?
有没有办法获得Java Bean字段的Object数组?我有一些表示数据库表 (Hibernate) 的 bean 类,我需要从它们中检索 jtable 模型的对象数组,但似乎唯一的方法是为每个类的每个字段调用 getXXX 方法 - 很多要做的工作。
我对这两者之间的区别有所了解。但是,我对何时使用何时使用有些困惑。我只知道,
我们可以从视图和模型中获取表的值。这是我感到困惑的地方。如果发生任何类似(行选择)的事件,那么我必须从中获取值?是从视图还是模型?考虑到 JTable 的排序和过滤,使用的最佳实践是什么?
我遇到了以下问题:我有一个JTable,它的on tablemodel坐在JFrame上.tablemodel使用自己的hashmap进行备份以存储内容.该表有两列,右侧可编辑.
通常,用户在右侧更改某个值,然后按下Enter按钮,该按钮将触发调用我的保存功能的tabledatachanged事件.然后可以关闭框架.
但是,有些用户只是简单地编辑单元格然后关闭窗口而不按Enter键,所以我没有机会保存表格.我知道如何在框架即将关闭时编写事件,但我不知道如何在完成编辑的同时检索"未完成"编辑的内容.
我想它与celleditors有关,我甚至尝试使用table.getCellEditor()来返回活动的但是它返回null.
谢谢您的帮助!
我有一个表格,正确显示txt文件中的所有图书清单.我添加了一个新的按钮框架,当获取id号为其文本字段时,如果找到,从文件中删除它的记录,但如果我也要从表中删除,我应该重新显示表格框架.我想,当从文件中删除一条记录时,我的表会自动刷新并且不需要重新显示表格框架.我的代码是这样的:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class ReadBookFileToListM {
public ReadBookFileToListM(){
final ReadBookFileToList rbftl=new ReadBookFileToList();
final JFrame Bframe=new JFrame("All Book List");
final JTextField tf1=new JTextField(" ");
final JLabel foundlable=new JLabel();
JButton button1=new JButton("Back To Main Page");
JButton button2=new JButton("Exit");
JButton button3=new JButton("Delete Book");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Bframe.setVisible(false); …
Run Code Online (Sandbox Code Playgroud) 我有一个jTable,现在我想在其中添加XML文件的内容.我不知道如何浏览XML文件,我目前只能操作数据(重写,删除)并获取单个标记的值,而不是所有.我正在使用JDOM
我的XML-File看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<app>
<!-- Pfad für Templates und speicher ort für die Entity.java-->
<Entity>
<Name>Aposting</Name>
<Art>0</Art>
<Datum>Wed Nov 19 10:51:10 CET 2014</Datum>
</Entity>
<Entity>
<Name>Aposting</Name>
<Art>1</Art>
<Datum>Wed Nov 19 11:30:34 CET 2014</Datum>
</Entity>
<Entity>
<Name>Aposting</Name>
<Art>1</Art>
<Datum>Wed Nov 19 15:21:12 CET 2014</Datum>
</Entity>
<Entity>
<Name>Aposting</Name>
<Art>2</Art>
<Datum>Thu Nov 20 8:01:10 CET 2014</Datum>
</Entity>
</app>
Run Code Online (Sandbox Code Playgroud)
我想在这样的表中显示它:
谢谢您的帮助
编辑:
我做了一个Custom模型
package TableTest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
/**
*
* @author Administrator
*/
public …
Run Code Online (Sandbox Code Playgroud) 我有一个JTable
具有DefaultTableModel
.现在我想更改表列标题和列数据类型(例如: - Boolean,String,Object等).我尝试做如下.
DefaultTableModel model = (DefaultTableModel) list_table.getModel();
list_table.setModel(new javax.swing.table.DefaultTableModel(new Object[][]{}, new String[]{"", "ID", "Name", "Age","Address", "Contact", "Gender", "Civil Status" }));
updateTable();
Run Code Online (Sandbox Code Playgroud)
""列对象类型应该是boolean.But我无法将对象类型更改为布尔值.此外,我在线程环境中运行它.
有任何想法.
您可以创建表模型并将其添加到表中
TableModel tm = new TableModel();
JTable table = new JTable(tm);
Run Code Online (Sandbox Code Playgroud)
但是,如果我初始化一个表
JTable table = new JTable();
Run Code Online (Sandbox Code Playgroud)
然后在以后创建一个表模型...
TableModel tm = new TableModel();
tm.addValueAt(...);
...
Run Code Online (Sandbox Code Playgroud)
有没有办法将这个表模型添加到原始表中?
其实我已经创建了自己的类来扩展TableModel
和JTable
了,我以为我可以简单地重建该表中给出的新表的模式,但这似乎并没有工作.
我有两个具有相同标题名称和列数的JTable.现在我想创建第三个JTable,当我单击merge Button时,它包含这两个JTable的所有值.请建议我任何答案.
我有2个面板.一个用户插入数据,另一个JTable
用于显示结果的位置.
我的问题是,当用户按下确定(在我的情况下应用)时JButton
,数据被计算但未显示在JTable
,没有任何变化JTable
.
对于我,JTable
我使用的Bean Table Model
是tips4Java(http://tips4java.wordpress.com/2008/11/27/bean-table-model/).
一个奇怪的事情是,如果我在程序启动时向表发送数据(让我们调用此数据'A'),它会显示在表中,如果稍后我尝试更新表,则表不会更新.但是,当我在启动时不向表发送数据但尝试更新/发送带有数据"A"的表时,它不会更新.
所以我的问题是,为什么不JTable
显示我发送的任何数据?
这是我的代码:
JButton监听,启动处理并将数据发送到表:
crashForm.setFormListener(new FormListener() {
@Override
public void formEvent(OptionsFormEvent oe) {
String readTable = oe.getReadFromTable();
int access = oe.getAccess();
int transition = oe.getTransition();
boolean smooth = oe.isTrainCrash();
ArrayList<String> allTrains = new ArrayList<>();
List crashedTrainList = new ArrayList<>();
try {
allTrains = controller.getUniqueTrains(controller.connectServer(), readTable, "trainid");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "An error occured while getting trains data\n" …
Run Code Online (Sandbox Code Playgroud) 如何将单元格渲染器和表格模型应用于同一个JTable
?问题是,如果我应用单元格渲染器,JTable
则不显示Boolean
类型字段的复选框.但是,如果我不应用单元格渲染器,则时间字段(JodaTime
)格式不正确.
model = new DefaultTableModel(data, columnNames)
{
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public String getColumnName(int col) {
return (String) columnNames[col];
}
@Override
public Object getValueAt(int row, int column) {
return data[row][column];
}
@Override
public Class getColumnClass(int column) {
return (getValueAt(0, column).getClass());
}
@Override
public void setValueAt(Object value, int row, int column) {
data[row][column] …
Run Code Online (Sandbox Code Playgroud) java ×12
tablemodel ×12
jtable ×10
swing ×10
constructor ×1
delete-row ×1
hibernate ×1
javabeans ×1
tooltip ×1
xml ×1