Estou fazendo seguinte, criando 2 Jlist e 1 JComboBox, conforme figura:
[img]http://img695.imageshack.us/img695/3730/padsof.jpg[/img]
1) Tenho que selecionar o professor
2) tenho que transferir as disciplinas de um lado para o outro
3) E quando clicar em Registrar Habilitações o mesmo deve salvar como está (cada disciplina em seu Jlist).
E isso seguindo o padrão MVP e usando SERIALIZAÇÃO.
Bom, eu parei na seguinte parte:
Estou querendo que a Jlist me retorne os arquivos salvos... mas quando compilo, me surge o seguinte erro:
java.io.FileNotFoundException: .\disciplinas.dat (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at teste.Disciplina.recuperaDisciplina(Disciplina.java:56)
at teste.Disciplina.<init>(Disciplina.java:79)
at teste.Main.main(Main.java:8)
Exception in thread "main" java.lang.NullPointerException
at teste.Disciplina.recuperaDisciplina(Disciplina.java:69)
at teste.Disciplina.<init>(Disciplina.java:79)
at teste.Main.main(Main.java:8)
"imports......"
public class Listas extends JFrame implements Observer{
private JList selecionadasList, disponiveisList;
private Container c;
private String resp;
private List<Professor> professores = new ArrayList<Professor>();
private List<Disciplina> discDisponiveis = new ArrayList<Disciplina>();
private List<Disciplina> discSelecionadas = new ArrayList<Disciplina>();
public void update(Observable o, Object arg) {
discDisponiveis = (List<Disciplina>) arg;
}
public Listas() {
FormLayout formLayout = new FormLayout(
"80dlu, 45dlu, 30dlu, 20dlu, 40dlu, 40dlu, 40dlu, 40dlu, 40dlu, 40dlu, 50dlu, 50dlu", // 12 colunas
"pref, 3dlu, pref, 2dlu, pref, 6dlu, pref, 2dlu, pref, 6dlu, pref, 15dlu, pref"); // 13 linhas
JPanel painel = new JPanel();
PanelBuilder builder = new PanelBuilder(formLayout, painel);
builder.setDefaultDialogBorder();
JComboBox prof = new JComboBox();
c = getContentPane();
c.setLayout(new FlowLayout());
//----------------------------------------------------------------------------------//
disponiveisList = new JList(discDisponiveis.toArray());
disponiveisList.setVisibleRowCount(10);
disponiveisList.setSelectionMode(
ListSelectionModel.SINGLE_INTERVAL_SELECTION);
//----------------------------------------------------------------------------------//
selecionadasList = new JList();
selecionadasList.setVisibleRowCount(6);
selecionadasList.setSelectionMode(
ListSelectionModel.SINGLE_INTERVAL_SELECTION);
//----------------------------------------------------------------------------------//
JButton rmvall = new JButton(">>");
JButton rmvselect = new JButton(">");
JButton addselect = new JButton("<");
JButton addall = new JButton("<<");
JButton registrarHabilitacoes = new JButton("Registrar Habilitações");
CellConstraints cc = new CellConstraints();
builder.add(new JLabel("Professor"), cc.xy(2, 1));
builder.add(prof, cc.xyw(4, 1, 7));
builder.add(new JLabel("Disciplinas Selecionadas"), cc.xy(1, 3));
builder.add(selecionadasList, cc.xywh(1, 5, 5, 7));
builder.add(new JLabel("Disciplinas Disponíveis"), cc.xy(9, 3));
builder.add(disponiveisList, cc.xywh(9, 5, 4, 7));
builder.add(rmvall, cc.xy(7, 5));
builder.add(rmvselect, cc.xy(7, 7));
builder.add(addselect, cc.xy(7, 9));
builder.add(addall, cc.xy(7, 11));
builder.add(registrarHabilitacoes, cc.xyw(5, 13, 5));
this.add(painel);
PlasticLookAndFeel.setPlasticTheme(new SkyBluer());
try {
UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
this.setVisible(true);
} catch (UnsupportedLookAndFeelException ex) {
System.out.println("Erro durante a definição da aparência da aplicação.");
System.exit(1);
}
}
}
package teste;
import java.io.*;
import java.util.*;
public class Disciplina extends Observable implements Serializable{
public String disciplina;
private static List<Disciplina> disciplinas = new ArrayList<Disciplina>();
public String getDisciplina() {
return disciplina;
}
public void setDisciplina(String disciplina) {
this.disciplina = disciplina;
}
public Disciplina(){
Disciplina pac = new Disciplina();
pac.setDisciplina("Projeto de AlgoritmosComputacionais");
Disciplina ap = new Disciplina();
ap.setDisciplina("Arquitetura de Computadores");
Disciplina lm = new Disciplina();
lm.setDisciplina("Lógica Matemática");
Disciplina bd = new Disciplina();
bd.setDisciplina("Banco de dados");
disciplinas.add(pac);
disciplinas.add(ap);
disciplinas.add(lm);
disciplinas.add(bd);
//recuperaDisciplina("./disciplinas.dat");
}
public void gravaDados() throws IOException {
FileOutputStream arquivoDisciplinas = new FileOutputStream("./disciplinas.dat");
ObjectOutputStream objGravarDisciplinas = new ObjectOutputStream(arquivoDisciplinas);
objGravarDisciplinas.writeObject(disciplinas);
objGravarDisciplinas.flush();
objGravarDisciplinas.close();
arquivoDisciplinas.flush();
arquivoDisciplinas.close();
System.out.println("Dados gravados com sucesso!!!");
}
private static ArrayList<Disciplina> recuperaDisciplina() {
FileInputStream arqLeitura = null;
ObjectInputStream in = null;
ArrayList<Disciplina> lista = null;
try {
//arquivo onde estao os dados serializados
arqLeitura = new FileInputStream("./disciplinas.dat");
//objeto que vai ler os dados do arquivo
in = new ObjectInputStream(arqLeitura);
//recupera os dados
lista = (ArrayList<Disciplina>) in.readObject();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
arqLeitura.close();
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return lista; //listaRecuperada
}
ArrayList<Disciplina> listaRecuperada = recuperaDisciplina();
//----------------------------------------------------------------------------------//
public void run(){
while (true){
notifyObservers( listaRecuperada );
}
}
}
package teste;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Disciplina disc = new Disciplina();
disc.gravaDados();
Listas list = new Listas();
//RegistrarHabilitacoes rh = new RegistrarHabilitacoes();
}
}
[size=18]Alguém poderia me ajudar com o erro que passei e também quanto a lógica? Sei que mal comecei mas eu to meio perdido no que fazer... Obrigado!!![/size]