【发布时间】:2011-11-24 16:01:21
【问题描述】:
我一直在这里搜索并找到了这个问题的答案,但似乎无法让它们为我工作。基本上我有一个包含 JScrollPane 内的 JTree 的 GUI:
private void initComponents() {
scroll = new javax.swing.JScrollPane();
nodo padre = new nodo();
modeloArbol modelo = new modeloArbol(padre);
arbol = new arbolNodos(modelo);
我有以下课程:
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 刷新和视图块(即,我无法在加载之前操作 JTree 中的任何内容)。我已经尝试了许多刷新/更新 JTree 的线程,但无法修复它。我该怎么做?
谢谢
【问题讨论】:
-
请学习java命名约定并遵守它们