我一直在這裏搜索,找到了這個問題的答案,但似乎無法讓他們爲我工作。 Basicly我有一個包含一個JScrollPane內JTree中GUI:JTree與DefaultTreeModel,如何加載後可視化刷新?
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個按鈕(botonGuardarArbol)和檢索(botonCargarArbol)使用所述XMLEncoder JTree的(他們真的檢索樹的根節點)到一個文件中與相應的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中放置它時,它不會刷新並且視圖塊(即。我無法在加載之前在JTree中操作任何東西)。我已經嘗試了刷新/更新JTree的無數線程,但無法修復它。我怎樣才能做到這一點?
謝謝
請學習java的命名約定並堅持到他們 – kleopatra