Tag: jtable

使用ArrayList创建jTable

我搜索了一会儿,但我无法找到解决问题的方法。 我想在JTable中显示ArrayList的值,我对此很新,并且无法修复错误。 package Statistik; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class Statistic { private static ArrayList rowA = new ArrayList(); private static ArrayList rowB = new ArrayList(); private static ArrayList rowC = new ArrayList(); private static ArrayList titel = new ArrayList(); private static ArrayList table = new ArrayList(); public static void main(String[] […]

如何将JTable列设置为String并排序为Double?

我还是Java的新手,对JTable(更具体地说是JXTable)有问题,并按列类对混合数据类型进行排序……让我详细说明…… 我有一个JXTable,用于保存产品列表的数据。 这个表有一个价格列,我只设置为String.class,这样我就可以显示前缀为’$’的价格。 我遇到的问题是当行按价格排序时,它们不是按双打排序,而是按字符串排序,所以这些值: 89.85,179.70,299.40,478.80 分类为: 179.70,299.40,47.80,89.85(升序)和89.85,47.80,299.40,179.70(降序) 我想要做的是在排序时删除’$’并将列排序为双打。 我怎么做到这一点? 编辑: 非常感谢Jiri Patera的回复。 帮助我理解tablecellrenderer负责在这些类型的情况下操纵值,这是一个很大的帮助。 以下是最终完成我想要的摘录。 public Component getTableCellRendererComponent(JTable pTable, Object pValue, boolean pIsSelected, boolean pHasFocus, int pRow, int pColumn) { // Use the wrapped renderer Component renderedComponent = mWrappedRenderer.getTableCellRendererComponent(pTable, pValue, pIsSelected, pHasFocus, pRow, pColumn); Component renderedComponentHeader = pTable.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(pTable, pValue, pIsSelected, pHasFocus, pRow, pColumn); if (pColumn == […]

如何将JScrollPane Layout设置为与JTable相同?

Tabel1.setModel(new DefaultTableModel(x,y)); JScrollPane pane = new JScrollPane(Tabel1); 当我运行程序时,滚动窗格看起来比表格大。 如何使滚动窗格布局与表格相同?

Java JTable更新行

我正在创建一个这样的JTable: String[] colName = new String[] { “ID#”, “Country”, “Name”, “Page titel”, “Page URL”, “Time” }; Object[][] products = new Object[][] { { “123”, “USA”, “Bill”, “Start”, “http://www.url.com”, “00:04:23” }, { “55”, “USA”, “Bill”, “Start”, “http://www.url.com”, “00:04:23” } }; dtm = new DefaultTableModel(products, colName); table = new JTable(dtm); 我怎么能按ID更新行? 我想更新ID等于55的整行。 编辑:我知道如何通过行ID检测,但我如何实际更新单元格? public void removeVisitorFromTable(String visitorID) […]

JTable可点击列标题

我正在尝试创建一个可单击的列标题(这样只要单击一个方法就会调用一个方法)。 链接到图像(因为我还没有10个声誉) http://img156.imageshack.us/img156/5764/clickablecolumn.png 列标题为红色矩形。 到目前为止,我所做的就是响应任何列字段(例如James,Benny-G和Rokas的字段)。 代码: public void mouseClicked(MouseEvent e) { System.out.println(“Mouse clicked”); TableColumnModel cModel = table.getColumnModel();//cModel – column model int selColumn = cModel.getColumnIndexAtX(e.getX());//gets the selected column by clicked x coordinate }

使用java DefaultCellEditor在JTable中获取正确的编辑行为

你可以通过点击它进入Jtable中的单元格,或者使用光标键/标签进入它。 使用defaultCellEditor和JtextField如果使用光标键,插入符号将放在现有文本字段的末尾,而如果双击该字段,则会突出显示最后一个单词。 虽然电子表格似乎有效(例如Open Office Calc),但是如果你选择进入字段并开始编辑,则清除字段并按下第一个字符成为字段中的第一个值,依此类推。 我希望我的应用程序的工作方式与电子表格相同。 通过inheritanceDefaultCellEditor并添加 final Caret caret = editField.getCaret(); caret.setDot(0); editField.setText(“”); 我可以在tabbing时让它按照我想要的方式工作,但它也会在双击时清除我不想要的字段。 那么请问如何确定键盘或鼠标是否触发了单元格编辑?

根据文本大小自动调整JTable列的大小

我有一个JTable,其中一些字段包含长文本,一些字段包含少量文本。 默认情况下,它的外观如下: 注意如何缩短“名称”和“标题”行。 我想知道两件事: 如何手动设置标题的宽度(如姓名,标题,姓氏) 如何根据文本自动调整所有这些大小。 这是代码: String[] columnNames = {“Name”, “Title”, “Surname”, “ID”}; Object[][] testData = { {“John”, “Mr.”, “Doe”, “61020384U”}, }; nameTable = new JTable(testData, columnNames); nameTable.setFont(new Font(“Tahoma”, Font.PLAIN, 11)); window.add(new JScrollPane(nameTable)); 我看过Swing Tutorials,但我要么错过了一些东西,要么就是不存在。

Java JTable禁用单个单元格选择边框高亮显示

我有一个JTable,每行有三列,见图: 出于某种原因,取决于我选择的列,我在上面的图像中得到它周围的小深蓝色边框(V140116554)。 我目前用它来选择整行: vTable.setRowSelectionAllowed(true); 我怎么能禁用它? 编辑: 添加了一个类: public class VisitorRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setBorder(noFocusBorder); return this; } } 并补充说: vTable.setDefaultRenderer(String.class, new VisitorRenderer()); 但仍然得到边界

JTable中的JComboBox

我在JTable的第3和第4列中有一个JComboBox,但我不知道如何获取它的项目…问题不是获取项目的方法,而是演员表 JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor(); 你能帮我吗?

StackOverflowError由TableModelListener引起

我不确定为什么这会复发。 jTable1.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent evt) { int sum = 0; int i=0; for (i =0 ; i<2; i++){ sum = sum + Integer.parseInt(jTable1.getValueAt(0, i).toString()); } jTable1.setValueAt(sum, 0, 2); } }); 例外是:(它不断重复) Exception in thread “AWT-EventQueue-0” java.lang.StackOverflowError at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277) at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2553) at javax.swing.JTable.getValueAt(JTable.java:2695) at testprogram.guitest.TestTableModel$1.tableChanged(TestTableModel.java:63) at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280) at javax.swing.table.AbstractTableModel.fireTableCellUpdated(AbstractTableModel.java:259) at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:650) at javax.swing.JTable.setValueAt(JTable.java:2719) […]