Java JX可释放物质L&;F油漆问题
使用substance look and feel时,JXTreeTable的第一列不会绘制在悬停上。当同一列也被拖到另一个位置时,问题仍然存在 此外,边界也没有涂漆。有什么解决办法吗 我使用的是实体商业l&f。我还包括了substance swingx插件 环境:Windows7、JDK1.6、Swingx1.6.3、Substance 7.1Java 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
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上回答了类似的问题,这是不可能的(参考资料丢失…我在用手机)