私はここで検索してこの問題の答えを見つけましたが、私にはうまくいかないようです。 Basicly私はJScrollPaneの内部JTreeのが含まれているGUIを持っています。JTree with DefaultTreeModel、ロード後に視覚的にリフレッシュするには?
private void initComponents() {
scroll = new javax.swing.JScrollPane();
nodo padre = new nodo();
modeloArbol modelo = new modeloArbol(padre);
arbol = new arbolNodos(modelo);
私は次のクラスがあります。私も(botonGuardarArbol)保存2つのボタンを持っていると(botonCargarArbol)を取得
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{
を使用してJTreeのXMLEncoder対応の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、私はそれがツリーのすべてのノード内に属性を印刷しようとしているのでうまく取得されていることを知っていますが、それらはOKですが、Swingに入れようとするとリフレッシュされず、私は読み込みを行う前に持っていたJTreeで何も操作できません)。私はリフレッシュ/更新JTreeの多数のスレッドを試しましたが、修正できませんでした。これどうやってするの?
は
Java命名規則を学び、それらに固執してください。 – kleopatra