Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JX可释放物质L&;F油漆问题_Java_Swing_Swingx_Substance_Jxtreetable - Fatal编程技术网

Java JX可释放物质L&;F油漆问题

Java JX可释放物质L&;F油漆问题,java,swing,swingx,substance,jxtreetable,Java,Swing,Swingx,Substance,Jxtreetable,使用substance look and feel时,JXTreeTable的第一列不会绘制在悬停上。当同一列也被拖到另一个位置时,问题仍然存在 此外,边界也没有涂漆。有什么解决办法吗 我使用的是实体商业l&f。我还包括了substance swingx插件 环境:Windows7、JDK1.6、Swingx1.6.3、Substance 7.1 public class SwingXExample extends JFrame { private JTabbedPane tabs = new

使用substance look and feel时,JXTreeTable的第一列不会绘制在悬停上。当同一列也被拖到另一个位置时,问题仍然存在

此外,边界也没有涂漆。有什么解决办法吗

我使用的是实体商业l&f。我还包括了substance swingx插件

环境:Windows7、JDK1.6、Swingx1.6.3、Substance 7.1

public class SwingXExample extends JFrame {
private JTabbedPane tabs = new JTabbedPane();
private JXTreeTable treeTable;
public SwingXExample() {
    JPanel treeTablePanel = new JPanel(new BorderLayout());
    treeTable = new JXTreeTable(new MyTreeTableModel());
    treeTablePanel.add(new JScrollPane(treeTable));
    tabs.addTab("JXTreeTable", treeTablePanel);
    add(tabs);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(new SubstanceBusinessBlueSteelLookAndFeel());
            } catch (UnsupportedLookAndFeelException e) {
                e.printStackTrace();
            }
            SwingXExample frame = new SwingXExample();
            frame.setSize(400, 300);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    });
}
}
树表模型

public class MyTreeTableModel extends AbstractTreeTableModel {
    private MyTreeNode myroot;

public MyTreeTableModel() {
    myroot = new MyTreeNode("root", "Root of the tree");
    myroot.getChildren().add(
            new MyTreeNode("Empty Child 1", "This is an empty child"));

    MyTreeNode subtree = new MyTreeNode("Sub Tree",
            "This is a subtree (it has children)");
    subtree.getChildren().add(
            new MyTreeNode("EmptyChild 1, 1",
                    "This is an empty child of a subtree"));
    subtree.getChildren().add(
            new MyTreeNode("EmptyChild 1, 2",
                    "This is an empty child of a subtree"));
    myroot.getChildren().add(subtree);

    myroot.getChildren().add(
            new MyTreeNode("Empty Child 2", "This is an empty child"));
}

@Override
public int getColumnCount() {
    return 3;
}

@Override
public String getColumnName(int column) {
    switch (column) {
    case 0:
        return "Name";
    case 1:
        return "Description";
    case 2:
        return "Number Of Children";
    default:
        return "Unknown";
    }
}

@Override
public Object getValueAt(Object node, int column) {
    // System.out.println( "getValueAt: " + node + ", " + column );
    MyTreeNode treenode = (MyTreeNode) node;
    switch (column) {
    case 0:
        return treenode.getName();
    case 1:
        return treenode.getDescription();
    case 2:
        return treenode.getChildren().size();
    default:
        return "Unknown";
    }
}

@Override
public Object getChild(Object node, int index) {
    MyTreeNode treenode = (MyTreeNode) node;
    return treenode.getChildren().get(index);
}

@Override
public int getChildCount(Object parent) {
    MyTreeNode treenode = (MyTreeNode) parent;
    return treenode.getChildren().size();
}

@Override
public int getIndexOfChild(Object parent, Object child) {
    MyTreeNode treenode = (MyTreeNode) parent;
    for (int i = 0; i > treenode.getChildren().size(); i++) {
        if (treenode.getChildren().get(i) == child) {
            return i;
        }
    }
    return 0;
}

public boolean isLeaf(Object node) {
    MyTreeNode treenode = (MyTreeNode) node;
    if (treenode.getChildren().size() > 0) {
        return false;
    }
    return true;
}

@Override
public Object getRoot() {
    return myroot;
}
}

有趣的是,highlighter不工作,请使用SSCCE编辑您的帖子,并提供有关JDK、本机操作系统、SwingX版本和Substance L&F牙套的信息,不幸的是,我在游泳池上,但还有另外两个三个很棒的minds@kleopatra我的问题还是不可能???嗯。。。在这方面没有最近的substanceLF,只是猜测swingx插件可能不是最新的(尽管treetable上暂时没有变化)。另一方面,它可能与treetable上的一个长期问题有关,该问题仍然没有在树部分使用表的渲染器,而是使用一个特殊的treetableCellRenderer。另外,滚动时的单元格命中检测有点棘手,因为坐标必须映射到树坐标。下周我将试着看一看。@kleopatra您在java.net.forum上回答了类似的问题,这是不可能的(参考资料丢失…我在用手机)