Tag: jtable

JTable Cell Renderer

我正在按照我发现的一些代码,(是的我理解它是如何工作的)它来自这里: Code Link 如果单元格值设置为“黄色”,我正在尝试设置单元格前景色 这是我的代码: public class Board extends JPanel{ private static final long serialVersionUID = 1L; int boardHeight = 20; int boardWidth = 10; JTable table; public Board() { table = new JTable(this.boardHeight, this.boardWidth); table.setDefaultRenderer(String.class, new BoardTableCellRenderer()); table.setFocusable(false); table.setShowGrid(false); table.setRowMargin(0); table.setIntercellSpacing(new Dimension(0,0)); table.setRowSelectionAllowed(false); table.setVisible(true); this.add(table); this.setPreferredSize(new Dimension(table.getPreferredSize().width, (table.getPreferredSize().height + 85))); } public void paint(Graphics […]

如何将JTable列调整为字符串长度?

我有一个JTable,它将最后一列数据字段更改为不同的字符串值。 我想将列的大小调整为字符串长度。 字符串长度与宽度的公式是什么? 我将使用JTable.getColumnModel().getColumn().setPreferredWidth()所以我想知道如何将字符串长度转换为宽度值。

如何打印选定的行JTable

我尝试使用Main JTable的选定行和相同的头部和单元格渲染执行临时JTable,但是当我尝试打印它时,我只得到一个带有边框的空矩形,我在如何打印出特定的行/ JTable的列? 使用矩形和单元格边界的另一种方法,但我不明白,我需要一些帮助,使它更清晰

JTable – > TableModeListener

我有这个JTable有一个DefaultTableModel作为它的模型。 在表格中,我有几个swing组件, JComboBox和JCheckBox ,通过DefaultCellEditor和DefaultCellRenderer在特定列上设置。 TableModelListener已添加到表中以捕获可编辑列的更改。 其余列将显示所选组件的详细信息,即项目代码 – >项目价格,项目计数,项目分类等。 我有这个问题,其中如果JComboBox(itemCode)发生更改,则另一个JComboBox(itemClassification)更改。 但是随着其他JComboBox的更改,我需要在同一个表上显示商品价格。 此更改会重新生成valueChanged方法,该方法会生成valueChanged的无限循环。 我怎样才能摆脱无限循环的东西?

难以理解swing的JTable和JTree的渲染器机制

通常,当使用JTable或JTree用户写入并分配时,它是自己的特定单元格渲染器。 从DefaultTableCellRendererinheritance用户的组件是很常见的,并实现了渲染器方法getTableCellRendererComponent 。 事实certificate, DefaultTableCellRenderer实际上是从JLabelinheritance的,因此当调用super(在render方法中)时返回自己(this),因此用户的渲染器也可以类似地返回自己(this)。 这一切都运作良好。 我的问题是它怎么样? 每次该表调用此方法时,都会为其指定不同的参数,并根据这些参数更改输出标签。 如果它确实是标签的同一个实例 – 不应该根据最后一次调用此方法进行更改吗? 是不是意味着所有表格的单元格都是由同一个标签实例组成的,该标签实例保持相同的值(最后一次调用渲染器方法的值)? 我在网上搜索,并在Swing的代码中挖掘,并且找不到任何实际复制输出标签的克隆或复制构造函数 。 我找不到任何证据表明(也许)swing使用reflection,以便每次从头开始重新实例化渲染器。 我已经阅读了关于JTables的Swing 教程,在那里我可以找到下一行: 您可能希望表中的每个单元格都是一个组件。 但是,出于性能原因,Swing表的实现方式不同。 相反,单个单元格渲染器通常用于绘制包含相同类型数据的所有单元格。 您可以将渲染器视为可配置的墨迹标记,该表用于将适当格式化的数据标记到每个单元格上。 当用户开始编辑单元格的数据时,单元格编辑器将接管单元格,从而控制单元格的编辑行为。 他们给出了一个暗示,我所说的确实是正确的,但不解释它是如何实现的。 我无法得到它。 可以吗?

在拖动列上显示列标题

我在GroupableHeader中实现代码并尝试启用允许重新排序但我有两个问题: 1:拖动列时,标题不会在列上看到 2:如何限制列的拖动区域以防止columnGroup的列退出 我不明白为什么标题在列拖动时看不到,我读了表头api但没有找到任何解决方案。 解决这些问题的任何想法?

将csv导入JTable

我有一个csv文件,我想将它导入JTable。 是否有一个简单的示例显示如何将csv文件导入JTable?

尝试使用适当的行标题创建JTable

我试图创建一个JTable,其行标题看起来就像一个列标题,我花了太多时间在它上面:/我的情况类似于这个问题: JTable行标题实现 ,也许这一个: 自定义jtable具有表格单元格标题颜色的cellrenderer 他们似乎还没有把我带到那里。 我搜索了很多例子,但都缺乏。 甚至没有任何带有行标题的表的例子来自Oracle / Sun. 看起来这种表不应该那么罕见。 这个只是格式化第一列,但它看起来不像列标题: http : //java-swing-tips.blogspot.com/2011/01/jtable-rowheader.html 这个似乎使用JList作为行标题,它有对齐问题(每行关闭+1像素),并且当我设置外观时看起来不那么好。 http://www.java2s.com/Code/Java/Swing-Components/TableRowHeaderExample.htm 这个看起来像我需要使用的想法(行标题是一个单独的JTable,但随后作为行标题加载到JScrollPane),但我需要调整它到我的代码,然后确保行标题得到正确标题的外观和感觉。 http://www.chka.de/swing/table/row-headers/JTable.html 这就是我所做的减去最后一点。 我尝试将表头的渲染器也作为行标题的渲染器。 行标题/第一列现在是灰色而不是白色,就像它只是另一个数据列时一样,但仍然看起来不像列标题。 这是正确的吗? 或者我应该坚持将它作为主表中的常规列保留并使用它做其他事情? 所以这是我更新表的代码。 此方法仅为列标题采用String数组,为行标题采用String数组,为主数据采用2D String数组。 我有一个用于行标题的JTable dispTableRowHeader和一个用于主数据表的JTable dispTable 。 private void updateDispTable(String[][] graphicalTable, String[] graphicalTableColumnHeader, String[] graphicalTableRowHeader) { //set model for the main data table, put in data. Also prevent editing cells dispTable.setModel(new javax.swing.table.DefaultTableModel( […]

只要单元格失去焦点,Jtable可以保存数据吗?

高级别:我有一个用户可以用来编辑数据的JTable。 每当用户按下Enter或Tab键完成编辑时,数据都会被保存(我知道“保存”实际上意味着“调用TableModel的setValueAt()方法”。) 如果用户在进行编辑后以任何其他方式离开单元格,则不会保存新数据,并且值保持原样。 因此,例如,如果用户更改了值,然后单击屏幕上的其他窗口小部件,则更改不会“坚持”。 我相信这是一个充满字符串的JTable的默认行为,是吗? 由于各种原因,所需的行为是单元格在用户离开单元格时保存任何和所有编辑。 让Swing做到这一点的最佳/正确方法是什么?

更改JTable中行的背景颜色

我有一个有3列的JTable。 我已经像这样为所有3列设置了TableCellRenderer (可能不是很有效?)。 for (int i = 0; i < 3; i++) { myJTable.getColumnModel().getColumn(i).setCellRenderer(renderer); } getTableCellRendererComponent()返回每行具有随机背景颜色的Component。 在程序运行时如何将背景更改为其他随机颜色?