- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在这里搜索并找到了这个问题的答案,但似乎无法让它们为我工作。基本上我有一个 GUI,其中包含 JScrollPane 内的 JTree:
private void initComponents() {
scroll = new javax.swing.JScrollPane();
nodo padre = new nodo();
modeloArbol modelo = new modeloArbol(padre);
arbol = new arbolNodos(modelo);
我有以下类(class):
public class arbolNodos extends JTree implements Serializable{
public arbolNodos(TreeModel newModel) {
public class listenerModeloArbol implements TreeModelListener{
//Overriding treeNodes*(TreeModelEvent e)
public class modeloArbol extends DefaultTreeModel implements Serializable{
public modeloArbol(TreeNode root) {
super(root);
}
public class nodo extends DefaultMutableTreeNode implements Serializable{
我还有 2 个按钮,它们使用 XMLEncoder 将 JTree 存储 (botonGuardarArbol) 和检索 (botonCargarArbol)(它们实际上检索树的根节点)到具有相应 actionPerformed 监听器的文件中:
private void botonGuardarArbolActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("C:\\borrar\\presupuesto")));
encoder.writeObject(arbol.getModel().getRoot());
encoder.close();
private void botonCargarArbolActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
XMLDecoder decoder = new XMLDecoder( new BufferedInputStream(new FileInputStream("C:\\borrar\\presupuesto")));
nodo padre = (nodo) decoder.readObject();
modeloArbol modelo = new modeloArbol(padre);
decoder.close();
modelo.setRoot(padre);
arbolNodos arbolNuevo = null;
if( modelo != null ){
arbolNuevo = new arbolNodos(modelo);
arbol = null;
arbol = arbolNuevo;
((DefaultTreeModel)arbol.getModel()).reload();
}
else
arbolNuevo = new arbolNodos();
问题是,当我检索存储的 JTree 时,我知道它检索得很好,因为我尝试在树的所有节点内打印属性并且它们没问题,但是当我尝试将其放入 Swing 中时却没有。 t 刷新和 View block (即,我无法在加载之前操作 JTree 中的任何内容)。我已经尝试了许多刷新/更新 JTree 的线程,但无法修复它。我怎样才能做到这一点?
谢谢
最佳答案
if( modelo != null )
{
arbolNuevo = new arbolNodos(modelo); //
arbol = null;
arbol = arbolNuevo;
((DefaultTreeModel)arbol.getModel()).reload();
}
else
arbolNuevo = new arbolNodos();
不要继续创建新的 JTree 对象。如果您想更改模型,只需使用:
tree.setModel(...);
另外,为什么要扩展 JTree、DefaultTreeModel、DefaultMutableTreeNode?如果由于某种原因您确实需要扩展这些类,请遵循这些类的标准 Java 命名约定。类以大写字符开头。
关于java - JTree与DefaultTreeModel,加载后如何在视觉上刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259734/
我正在尝试序列化一个 DefaultTreeModel,它由 DefaultMutableTreeNode 和 Strings 以及各种自定义类和枚举组成,每个都实现 可序列化并且类都使用它; pri
我有一个 DeafultTreeModel 树,其中包含三个级别的节点。我希望能够使根节点及其直接子节点不可选择。而第三级子节点应该是可选的。有人可以帮我解决这个问题吗?我是 Swing 的新手,希望
我正在尝试从 DefaultTreeModel 中删除节点。如果我尝试删除单个节点,它不会从 GUI 中删除。如果我删除 2 个节点,则只有其中 1 个被删除,依此类推。 我正在使用 removeNo
我在 Web 应用程序中使用 Wicket 的树组件。但是空文件夹以文件方式显示。像这样: 下面是我使用 DefaultTreeModel 和树的地方: PDMinterface pdmI = new
我在名为 TreeFrame 的 JFrame 子类的构造函数中包含此代码。我想在 JTree 中显示 3 个级别,每个级别 10 个项目。为什么这会按预期工作: private DefaultTre
我注意到在 jTree 中调用和定义的 jTree.treeModelHandler 为 treeNodesChanged 和 treeNodesInserted 事件实现了空白方法。 Default
Java 应用程序需要根据用户输入添加和删除 TreeNode。实际上一切正常,除了删除节点有时会导致 ArrayIndexOutOfBoundsException 。我所做的是首先确定是否应该显示节
我是一名优秀的程序员,十分优秀!