2015-06-25 2 views
0

Я работаю в небольшой программе, которая позволяет размещать вещи на карте, давать ей имя или описание. Места могут иметь категорию, которую вы выбираете из JList с параметром defaultListModel. Если я создал некоторые категории и хочу сохранить мой проект и продолжить какое-то другое время, когда я загружаю сохраненный файл, все загружается идеально, кроме моего списка категорий. Он по-прежнему пустой, и если у меня есть проект с категориями и загрузка нового проекта, старые категории все еще существуют. Я не могу понять, что случилось, я, должно быть, пропустил какое-то обновление здесь?Мои новые данныеМодель не заменяет старый в моем JList [ОБНОВЛЕНО]

package test; 

import javax.swing.*; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 
import javax.swing.filechooser.FileNameExtensionFilter; 

import java.awt.*; 
import java.util.List; 
import java.awt.event.*; 
import java.io.*; 
import java.io.File; 
import java.util.*; 



public class Testar extends JFrame { 






JComboBox place; 

JTextField searchField; 
JButton searchButton, hideButton, deletePlaceButton, whatIsHere, hideCat, newCat, delCat; 
JFileChooser jfc = new JFileChooser("."); 
boolean changed = false; 

DefaultListModel<PlaceCategory> dataModel = new DefaultListModel<>(); 
JList<PlaceCategory> categoryList = new JList<PlaceCategory>(dataModel); 

// DefaultListModel<PlaceCategory> NewDataModel = new DefaultListModel<>(); 

Testar(){ 
    super("test"); 

    //FILEMENU TOPP 
    JMenuBar fileBar = new JMenuBar(); 
    setJMenuBar(fileBar); 

    JMenu archive = new JMenu("File"); 
    fileBar.add(archive); 

    JMenuItem open = new JMenuItem("Open"); 
    archive.add(open); 
    open.addActionListener(new OpenLis()); 

    JMenuItem save = new JMenuItem("Save"); 
    archive.add(save); 
    save.addActionListener(new SaveLis()); 

    //kategorier ÖST 

    JPanel east = new JPanel(); 
    add(east, BorderLayout.CENTER); 

    east.add(new JLabel("Categories")); 


    categoryList.setVisibleRowCount(3); 
    categoryList.setFixedCellWidth(50); 
    east.add(new JScrollPane(categoryList)); 
    categoryList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

    //ACTIONLISTENER 

    hideCat = new JButton("Hide category"); 
    east.add(hideCat); 

    newCat = new JButton("New category"); 
    east.add(newCat); 
    newCat.addActionListener(new NewCatLis()); 

    delCat = new JButton("Delete category"); 
    east.add(delCat); 

    BoxLayout eastLayout = new BoxLayout(east, BoxLayout.Y_AXIS); 
    east.setLayout(eastLayout); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(300,300); 
    setVisible(true); 
    setLocationRelativeTo(null); 
    setResizable(false); 
} 


class NewCatLis implements ActionListener{ 
    public void actionPerformed(ActionEvent ave){ 
     String categoryName; 
     Color color = Color.BLACK; 

     categoryName = JOptionPane.showInputDialog(Testar.this, "Name on category"); 
     color = JColorChooser.showDialog(Testar.this,"Chooser color", color); 
     PlaceCategory pc = new PlaceCategory(categoryName, color); 
     dataModel.addElement(pc); 

    } 

} 

class OpenLis implements ActionListener{ 
    public void actionPerformed(ActionEvent ave){ 
     int answer = jfc.showSaveDialog(Testar.this); 
     if(answer != JFileChooser.APPROVE_OPTION){ 
      return; 
     } 

     File file = jfc.getSelectedFile(); 
     String filename = file.getAbsolutePath(); 

     try{ 

      FileInputStream fis = new FileInputStream(filename); 
      ObjectInputStream ois = new ObjectInputStream(fis); 

      dataModel = (DefaultListModel)ois.readObject(); 

      System.out.println(dataModel); 

//    NewDataModel = dataModel; 
//    
//    dataModel.clear(); 
//    
//    for(int i=0; i < NewDataModel.size(); i++){ 
//     PlaceCategory pc = NewDataModel.get(i); 
//     dataModel.addElement(pc); 
//     System.out.println("addar"); 
//    } 
//    
//    NewDataModel.clear(); 


      ois.close(); 
      fis.close(); 
      pack(); 
      validate(); 
      repaint(); 
      changed = false; 

     } catch(ClassNotFoundException e){ 
      JOptionPane.showMessageDialog(Testar.this, "Something went wrong... "+e.getMessage()); 
     } catch(FileNotFoundException e){ 
      JOptionPane.showMessageDialog(Testar.this, "Can not open the file..."); 
     } catch(IOException e){ 
      JOptionPane.showMessageDialog(Testar.this, "Something went wrong... "+e.getMessage()); 
     } 
    } 
} 

class SaveLis implements ActionListener{ 
    public void actionPerformed(ActionEvent ave){ 
     int answer = jfc.showSaveDialog(Testar.this); 
     if(answer != JFileChooser.APPROVE_OPTION){ 
      return; 
     } 

     File file = jfc.getSelectedFile(); 
     String filename = file.getAbsolutePath(); 

     try{ 
      FileOutputStream fos = new FileOutputStream(filename); 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 

      oos.writeObject(dataModel); 

      oos.close(); 
      fos.close(); 

      changed = false; 

     } catch(FileNotFoundException e){ 
      JOptionPane.showMessageDialog(Testar.this, "Can not open the file..."); 
     } catch(IOException e){ 
      JOptionPane.showMessageDialog(Testar.this, "Something went wrong... "+e.getMessage()); 
     } 
    } 
} 

public static void main(String[] args){ 
    new Testar(); 
} 

} 

и моя местонахождение в категории cc!

package test; 


import java.awt.*; 
import java.io.*; 

public class PlaceCategory implements Serializable { 

private String name; 
public Color color; 



public PlaceCategory(String name, Color color){ 
    this.name = name; 
    this.color = color; 


} 

public String toString(){ 
    return name; 
} 

public Color getColor() { 

    return color; 
} 

public String getName(){ 
    return name; 
} 


} 
+0

Было бы намного легче помочь вам, если бы вы могли включить какой-либо скомпилированный код. – Amber

+1

Чтобы лучше помочь, опубликуйте [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверенный пример) или [SSCCE] (http://www.sscce.org/) (Short, Self Содержащийся, правильный пример). –

+0

@AndrewThompson добавил маленький –

ответ

0

Нашли способ сделать так, чтобы это произошло! добавлено это после загрузки:

categoryList.setModel(dataModel);