- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试理解 JXTreeTable ,因为我引用了一个站点来进行简单的 JXTreeTable 实现:下面是修改后的代码(我从一个站点中选择它)
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import org.jdesktop.swingx.JXTreeTable;
import org.jdesktop.swingx.treetable.AbstractTreeTableModel;
class MyTreeTableModel extends AbstractTreeTableModel {
private MyTreeNode myroot;
public MyTreeTableModel() {
myroot = new MyTreeNode("root", "Root of the tree", "zcxz");
ims.CPool.configureConnPool();
Connection con = CPool.getConnection();
try {
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select distinct category from inventory");
Statement s2 = con.createStatement();
ResultSet r2 = s2.executeQuery(" select category,name,supplier from inventory");
while (rs.next()) {
MyTreeNode cat = new MyTreeNode(rs.getString(1), " ", " ");
myroot.getChildren().add(cat);
}
while(r2.next())
{
System.out.println(r2.getString(1)+"bnnbnb");
if(this.getValueAt( r2.getObject(1),0).equals(r2.getObject(1))==true)
{ System.out.println("zxccx");
}
}
} catch (Exception x) {
System.out.println(x.getMessage());
x.printStackTrace();
}
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Name";
case 1:
return "Supplier";
case 2:
return "Category";
case 3:
return "Size";
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.getCategory();
case 3:
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;
}
}
// TODO Auto-generated method stub
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;
}
}
class MyTreeNode {
private String name;
private String description;
private String category;
private List<MyTreeNode> children = new ArrayList<MyTreeNode>();
public MyTreeNode() {
}
public MyTreeNode(String name, String description, String categ) {
this.name = name;
this.category = categ;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String name) {
this.category = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<MyTreeNode> getChildren() {
return children;
}
public String toString() {
return "MyTreeNode: " + name + ", " + description + " ," + category;
}
}
public class TT extends JFrame {
private JTabbedPane tabs = new JTabbedPane();
private MyTreeTableModel treeTableModel = new MyTreeTableModel();
private JXTreeTable treeTable = new JXTreeTable(treeTableModel);
public TT() {
super("SwingX Examples");
// Build the tree table panel
JPanel treeTablePanel = new JPanel(new BorderLayout());
treeTablePanel.add(new JScrollPane(treeTable));
tabs.addTab("JXTreeTable", treeTablePanel);
// Add the tabs to the JFrame
add(tabs);
setSize(1024, 768);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(d.width / 2 - 512, d.height / 2 - 384);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
AppStarter starter = new AppStarter(args);
SwingUtilities.invokeLater(starter);
}
}
class AppStarter extends Thread {
private String[] args;
public AppStarter(String[] args) {
this.args = args;
}
public void run() {
TT example = new TT();
}
}
运行代码时出现以下异常:
at ims.MyTreeTableModel.getValueAt(TT.java:85)
at ims.MyTreeTableModel.<init>(TT.java:41)
at ims.TT.<init>(TT.java:206)
at ims.AppStarter.run(TT.java:247)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
,库存元素有子类别,如查询中所示(我想生成一个 JXTreeTable,其中类别作为父节点,属于类别的库存元素作为子元素)。请帮助我,因为我是 JXTreeTables 的新手。
最佳答案
class TTM extends AbstractTreeTableModel {
TTN root;
String[] header;
public TTM(TTN root, String[] header) {
this.root = root;
this.header= header;
}
@Override
public int getColumnCount() {
return header.length;
}
@Override
public String getColumnName(int column) {
return header[column];
}
@Override
public Object getValueAt(Object node, int Column) {
TTN treenode = (TTN) node;
return treenode.GetValueAt(Column);
}
@Override
public Object getChild(Object node, int index) {
TTN treenode = (TTN) node;
return treenode.GetChildren().get(index);
}
@Override
public int getChildCount(Object parent) {
TTN treenode = (TTN) parent;
return treenode.GetChildren().size();
}
@Override
public int getIndexOfChild(Object parent, Object child) {
TTN treenode = (TTN) parent;
for (int i = 0; i > treenode.GetChildren().size(); i++) {
if (treenode.GetChildren().get(i) == child) {
return i;
}
}
return 0;
}
@Override
public boolean isLeaf(Object node) {
TTN treenode = (TTN) node;
return treenode.GetChildren().size() <= 0;
}
@Override
public Object getRoot() {
return root;
}
}
Class TTN extends AbstractMutableTreeTableNode {
Object[] Row;
public TTN() {
}
public TTN(Object[] Row) {
this.Row = Row;
}
public Object GetValueAt(int Column) {
return this.Row[Column];
}
public ArrayList<TTN> GetChildren() {
return children;
}
@Override
public String toString() {
return this.Row[0].toString();
}
@Override
public int getColumnCount() {
return Row.length;
}
@Override
public Object getValueAt(int column) {
return Row[column];
}
}
我在另一个网站上找到了上述类,然后进行了修改。您可以初始化一个TTN(TreeTableNode)作为根节点。然后,您可以使用 TreeTableModel
的匿名新实例设置 jXTreeTable1
的 TableModel
。传入您初始化的根节点,以及一个 String
数组作为 header 。
示例:
TTN root = new TTN(new Object[]{"abc", "def"});
jXTreeTable1.setTreeTableModel(new TTM(root, new String[]{"Name", "Serial", "Date added", "Limit", "Transactions type", "Type", "ID"}));
添加新行:
Node.GetChildren().add(new TTN(new Object[]{"abc", "def"}));
关于java - 实现 JXTreeTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695126/
这里仍然是一个 Java 新手,为了我自己的利益,我正在努力尝试一些过于先进的东西。不过,这是我需要做的:JXTreeTable 中的一个复选框。我的主要类(class): package info.
我正在尝试理解 JXTreeTable ,因为我引用了一个站点来进行简单的 JXTreeTable 实现:下面是修改后的代码(我从一个站点中选择它) import java.awt.BorderLay
在 JXTreeTable 中是否可以有可变大小的行,如果是那么如何? ,我正在尝试更改 TreeExpansionEvent 上行的高度(如下所示): public void treeExpande
来自SwingLabs Forum ,似乎没有计划让 JXTreeTable 可排序。 从线程中,另一种选择是 “您可以使用 JXTable 和 GlazedLists TreeList 来制作 Tr
我正在尝试在 JXTreeTable 上添加固定列。我用过Fixed Column Table并做了一些调整以使其正常工作,但我遇到了崩溃事件的问题。当我在固定侧折叠节点时,它不会在移动侧折叠。 见下
当底层模型发生变化时,我无法找到重新绘制 JxTreeTable 的最佳方法。 对于表中的每个节点,我都有一个对应的模型对象,因此如果模型发生变化,我可以获得该节点。 此后,给定一个节点,您如何触发表
我正在使用默认情况下对表进行行条纹的外观。当我放入 JXTreeTable 时,我注意到由于某种原因它没有自动获取行 strip 化。 所以我使用荧光笔提出了一种解决方法,但看起来我遇到了重画故障:
可编辑的 JxTreeTable 是否有任何工作示例。我确实尝试了一些方法。但没有运气......只有第一列是可编辑的。 如何使所有列都可编辑? 对不起各位, 这是我的源代码: /* * To cha
这真的让我很困惑。到目前为止我将展示我的代码。我正在尝试使某些字段可编辑。这是最终目标,但我只是尝试放入 JCheckBox 只是为了测试。但即使这样似乎也不起作用。 你能看一下这个吗?我真的很感激。
我有一个 JXTreeTable,它的左侧有一棵节点树(不同的数据类型),右侧有一个网格(默认)。 现在我希望所有显示的值(还有树标题)均取自 getValueAt(row,column) 方法,而不
使用 Java 代码,我试图操作另一个外部 Java swing 应用程序,但我无法访问该应用程序的任何有关其编码方式的信息。具体来说,我正在尝试操作 JXTreeTable。其中 boolean 类
谁能提供一个具体的例子来说明如何使 JXTreeTable 可编辑? 具体来说,我想让一列中的所有单元格都可编辑。开箱即用似乎并不支持此功能。 最佳答案 JXTreeTable具有常规 JTable
我有一个带有自定义单元格渲染器的 JXTreeTable。当一行中的字段与上一行中的字段不同时,我试图让一行的背景颜色发生变化。例如,该行包含“1”作为 ID。如果前一行也包含“1”,我希望这一行被涂
我想创建一个简单的 JXTreeTable,所以我构建了以下代码: public static void main(String[] args){ JTreeTable table = new
要防止 JTree 节点折叠,您可以使用 setExpandedState() 方法。 我没有看到 SwingX JXTreeTable 类的类似方法,并且 JXTreeTable 似乎没有扩展 JX
我将尝试为 JXTreeTable 实现 RowFilter,但它不起作用。我的实现是这样的: public class CustomRowFilter extends RowFilter { @Ov
我正在使用JXTreeTable来制作树表结构,现在我想动态更改特定单元格的颜色。如何改变单元格的颜色? 我发现这段代码可以改变颜色,但这不起作用。 这里是代码: leftTree.setDefaul
我正在尝试为 JXTreeTable 的树列设置自定义树单元格编辑器,但由于某种原因,我的编辑器从未被调用。 这是应该设置编辑器的位: dataTable.setDefaultEditor(DataE
我正在使用 JXTreeTabble 构建一个 treetable,我想根据所选值禁用/启用 menu 项目。所以,我尝试将此代码放入我的表模型中: public Object getValueAt(
我想使用 JComboBox 作为 JXTreeTable 中的单元格编辑器.它适用于标准 DefaultCellEditor(即 开始点击次数 等于 2)。 现在我希望只需单击一次 即可编辑该列。所
我是一名优秀的程序员,十分优秀!