标签: jxtreetable

对DefaultRowSorter进行子类化以允许树表排序

这个问题中,我问如何使JXTreeTable(SwingX)排序成为它的首要元素.

我接过一看库(aephyr)所建议mKorbel,并试图将其与JXTreeTable结合(我创建了一个名为JXSortableTreeTable类新复制JXTreeTable的源代码).

到目前为止,我能够实现一种机制来对树表的节点进行排序,即当convertRowIndexToModel调用我的自定义排序器(见下文)时,它返回的索引是正确的.

因此,我有一个看起来像这样的类:

public class TreeTableRowSorter <M extends TreeTableModelAdapter> extends DefaultRowSorter {
    private M treeTableModel; // model
    private List<Integer> indices; // list where each entry is the model index
    private IdentityHashMap<Object, NodeSorter> sorters;

    private class IndicesMapFiller { // class that fills the "map" this.indices
        public void fillIndicesMap(Object node) { // recursive
            // Fills the indices "map"
        }
    }

    @Override
    public int convertRowIndexToModel(int index) {
        return indices.get(index);
    }

    @Override
    public int convertRowIndexToView(int …
Run Code Online (Sandbox Code Playgroud)

java swing swingx treetable jxtreetable

16
推荐指数
1
解决办法
2288
查看次数

如何使JXTreeTable排序其顶级元素

我知道(我已查看过这些来源;))已禁用JXTreeTable上的排序.

但是,我想仅允许根据根节点的直接子节点的值对所有列进行排序.

说我有这样的结构:

Name       / Date       / File UID
(Root)
|- Mr. X   / 1996/10/22 / AE123F6D
|--- File1 / 2012/01/10 / DFC2345Q
|--- File2 / 2012/01/11 / D321FEC6
|- Mrs. Y  / 1975/03/03 / G2GF35EZ
|--- File3 / 2012/02/29 / 35GERR32
|--- File4 / 2012/01/22 / LKJY2342
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想要实现的是仅在第一级节点上对3列进行排序.假设我想按升序日期对其进行排序,它最终会像这样:

Name       / Date       / File UID
(Root)
|- Mrs. Y  / 1975/03/03 / G2GF35EZ
|--- File3 / 2012/02/29 / 35GERR32
|--- File4 / 2012/01/22 / LKJY2342
|- Mr. …
Run Code Online (Sandbox Code Playgroud)

java swing jtable swingx jxtreetable

8
推荐指数
1
解决办法
3907
查看次数

如何:JTable在第一列中具有可折叠JTree,在其他列中具有数据?

我在这一点上有点迷失:我尝试创建一个JTable,它能够在第一列中保存某种树(JTree?)数据结构,然后是基于其他列中的树节点的数据,如下所示图片:

在此输入图像描述

该图像显示了我的JTree的结构.红线表示我需要实现的表结构.树中的每个节点应该像该表中的单行一样进行treatet等等.我希望我能够清楚地了解到我想要实现的目标.

我试过像这里讨论的那样:JTable作为一个JTree节点,这里把JTable放在JTree中,但这不符合我的需要.我还从SwingX项目中了解了JXTreeTable,但似乎很难找到任何有用的例子.此类解决方案的许多链接似乎导致(不再存在)sun网站和/或重定向到oracle网站......

如果有人可以引导我走向正确的方向和/或提供一些如何做到这一点的正常代码(右),这将是非常棒的.

任何帮助,将不胜感激 ;).

java swing jtree jtreetable jxtreetable

8
推荐指数
1
解决办法
6839
查看次数

如何使用swingx 1.6突出显示JTable中的每一行

我需要突出显示JTable中的每一行.使用旧版本的swingx,可以这样做:

table.setHighlighters(new HighlighterPipeline(new Highlighter[] { new AlternateRowHighlighter(
            color1, color2,color3 }));
Run Code Online (Sandbox Code Playgroud)

但现在,使用swingx 1.6,方法setHighlighters()无法接受这些参数.它说"JXTable类型中的方法setHighlighters(Highlighter ...)不适用于参数(HighlighterPipeline)"

那么我怎么能用新的swingx呢?

java swing swingx jxtreetable swingx-highlighter

7
推荐指数
1
解决办法
1738
查看次数

如何只用一次鼠标点击编辑JXTreeTable单元格?

我想在a中使用a JComboBox作为单元格编辑器JXTreeTable.它与标准工作正常DefaultCellEditor(即点击计数开始等于2).

现在我希望只需单击一下就可以编辑该列.所以我cellEditor.setClickCountToStart(1);在我的代码中添加了一个声明.

这是我的SSCCE:

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import org.jdesktop.swingx.JXTreeTable;
import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode;
import org.jdesktop.swingx.treetable.DefaultTreeTableModel;

public class TestCellEditorForJXTreeTable {

    /** The JXTreeTable */
    JXTreeTable treeTable;
    /** The model */
    DefaultTreeTableModel treeTableModel;

    /** Constructor */
    public TestCellEditorForJXTreeTable() {

        treeTable = new JXTreeTable();
        treeTableModel = new DefaultTreeTableModel() {
            @Override
            public String getColumnName(int column) {
                switch (column) {
                    case 0:
                        return "A";
                    case 1:
                        return …
Run Code Online (Sandbox Code Playgroud)

java swing swingx tablecelleditor jxtreetable

7
推荐指数
1
解决办法
1233
查看次数

从JXTreeTable中获取选定的值

我正在构建一个treetable使用JXTreeTabble,我想menu根据所选值禁用/能够项目.所以,我试着把这个代码放在我的table model:

public Object getValueAt(int index) {
        if (index >= 0 && index < root.getSize()){
            return root.get(index);
        }

        return null;

    }
Run Code Online (Sandbox Code Playgroud)

问题

以上仅适用于table未扩展内容的情况.由于indexselected row可能是比较大size的T的able model(模型可以有两个项目和行可以有10当一切都展开).此外,它object typeparent不同之处children(想象一本带有章节的书,因为它的孩子).

你有什么建议正确地做到这一点?

java object selected tablemodel jxtreetable

6
推荐指数
2
解决办法
3345
查看次数

如何获得双击的TreeTableNode?

我正在使用Eclipse,我有一个关于JXTreeTables的问题.我想要一个窗口,显示有关节点的一些信息,在双击节点时弹出.现在,是否有可能获得JXTreeTable的双击节点或null如果单击不是直接在节点上?

java swing swingx jxtreetable

5
推荐指数
1
解决办法
1450
查看次数

自定义TableCellRenderer/TreeTableCellRenderer不呈现表格单元格

我把这个CustomCellRenderer类打算用于JXTreeTableJXTable对象,因为我的项目中有很多这些.所以这个类实现TreeCellRendererTableCellRenderer接口:

public class CustomCellRenderer extends JLabel 
                                implements TreeCellRenderer, TableCellRenderer {

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        setBackground(selected ? new Color(83,142,213) : Color.white);
        setForeground(selected ? Color.white : Color.black);
        //here is the icon setting code but it's irrelevant to my problem
        setText(value != null ? value.toString() : "<null>");
        return this;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, …
Run Code Online (Sandbox Code Playgroud)

java swing renderer swingx jxtreetable

5
推荐指数
1
解决办法
3662
查看次数

TreeTableColumn.visible:无法设置绑定值

我制作了一个简单的JavaFX应用程序。在此应用程序中,有一个2列的树形表和一个复选框。如果选中此复选框,则第2列将可见,否则不可见。为此,我将树形表的列可见属性绑定到复选框selected属性。当我单击复选框时,列状态会发生变化,但同时会给出。

原因:java.lang.RuntimeException:TreeTableColumn.visible:无法设置绑定值。

如果我使用双向绑定,则不会出现此错误。但是我不需要双向绑定。是错误还是我没有正确使用绑定?请使用下面的代码重现此错误。我使用jdk1.8.0_111。

JavaFXApplication.java

package test;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class JavaFXApplication extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
Run Code Online (Sandbox Code Playgroud)

FXMLDocumentController.java

package test;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TreeTableColumn;
import …
Run Code Online (Sandbox Code Playgroud)

java jxtreetable property-binding javafx-8 treetableview

5
推荐指数
1
解决办法
425
查看次数

一个像JTreeTable的表,可编辑的组件,如ComboBox,TextArea,CheckBox as Rows

在此输入图像描述

在java中是否有任何自定义插件(如带有可编辑java组件的JTreeTable),如上图所示.

我知道这可以通过扩展JTreeTable或JXTreeTable类或使用TreeCellEditor等来完成......但是,我需要一个非常精确的结构,如上图所示,请指导我并提前致谢.

java swing jtree jtreetable jxtreetable

4
推荐指数
1
解决办法
976
查看次数

如何防止 JXTreeTable 根节点崩溃?

为了防止JTree节点崩溃,可以使用该setExpandedState()方法。

我没有看到 SwingXJXTreeTable类的类似方法,并且似乎JXTreeTable没有扩展JXTree(它扩展了 JTree)。

关于如何防止根节点在 上崩溃有什么建议吗JXTreeTable

java swing swingx jxtreetable

2
推荐指数
1
解决办法
1105
查看次数

JXTreeTable中的复选框

这里仍然是一个Java新手,为了我自己的利益而尝试过于先进.不过,这就是我需要做的:JXTreeTable中的一个复选框.我的主要课程:

package info.chrismcgee.sky.production;

import info.chrismcgee.sky.production.treetable.NoRootTreeTableModel;

import java.awt.Checkbox;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;

import net.miginfocom.swing.MigLayout;

import org.jdesktop.swingx.JXTreeTable;

public class TestFrame extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = -1899673458785493250L;
    private JXTreeTable treeTable;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    TestFrame frame = new TestFrame();
                    frame.setVisible(true);
                } catch …
Run Code Online (Sandbox Code Playgroud)

java swing swingx jcheckbox jxtreetable

2
推荐指数
1
解决办法
2186
查看次数