Ir ao conteúdo
  • Cadastre-se
Rafael Souza Soares

Problema com ordenação alfabética

Recommended Posts

Olá, tenho uma tablemodel e gostaria que ao gravar na tabela ficasse ordenado em ordem albafética os nomes, Como Implementar

 


Main.java



import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;


public class Main {
private JFrame janela;
private JLabel labelNome;
private JLabel labelIdade;
private JLabel labelBrasileiro;
private JTextField textNome;
private JTextField textIdade;
private JCheckBox checkBrasileiro;
private JPanel panelCampos;
private JButton gravar;
private JButton limpar;
private JButton apagar;
private JButton salvar;
private JButton sair;
private JPanel panelButtons;
private List<Pessoa> pessoas;
private PessoaTableModel ptm;
private JTable tabela;
private String filename;


public Main(String filename) {
this.filename = filename;
janela = new JFrame("Teste de Tabela e Arquivo " + filename);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new BorderLayout());


labelNome = new JLabel("Nome");
labelIdade = new JLabel("Idade");
labelBrasileiro = new JLabel("Brasileiro");


textNome = new JTextField(20);
textIdade = new JTextField(20);
checkBrasileiro = new JCheckBox();


panelCampos = new JPanel(new GridLayout(3, 2));
panelCampos.add(labelNome);
panelCampos.add(textNome);
panelCampos.add(labelIdade);
panelCampos.add(textIdade);
panelCampos.add(labelBrasileiro);
panelCampos.add(checkBrasileiro);


gravar = new JButton("Gravar");
gravar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (textNome.getText().compareTo("") == 0) {
JOptionPane.showMessageDialog(null, "Campo nome vazio",
"Alerta", 0);
} else {
String nome = textNome.getText();
int idade = 0;
try {
idade = Integer.valueOf(textIdade.getText());
Boolean brasileiro = checkBrasileiro.isSelected();
int linha = tabela.getSelectedRow();
if (linha < 0) {
pessoas.add(new Pessoa(nome, idade, brasileiro));
ptm.setPessoas(pessoas);
} else {
Pessoa p = pessoas.get(linha);
p.setNome(nome);
p.setIdade(idade);
p.setBrasileiro(brasileiro);
ptm.setPessoas(pessoas);
}
limparDados();
} catch (Exception e1) {
JOptionPane.showMessageDialog(null,
"O campo idade precisa ser um inteiro", "Erro",
0);
}
}
}
});
limpar = new JButton("Limpar");
limpar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
limparDados();
}
});
apagar = new JButton("Apagar");
apagar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int linha = tabela.getSelectedRow();
if (linha < 0) {
JOptionPane.showMessageDialog(null,
"Favor selecionar a linha a excluir", "Alerta", 0);
} else {
pessoas.remove(linha);
ptm.setPessoas(pessoas);
limparDados();
}
}
});
salvar = new JButton("Salvar");
salvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
write();
}
});
sair = new JButton("Sair");
sair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
panelButtons = new JPanel();
panelButtons.add(gravar);
panelButtons.add(limpar);
panelButtons.add(apagar);
panelButtons.add(salvar);
panelButtons.add(sair);


pessoas = new ArrayList<Pessoa>();
load();
ptm = new PessoaTableModel();
ptm.setPessoas(pessoas);


tabela = new JTable();


tabela.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() >= 0) {
int linha = tabela.getSelectedRow();
if (linha >= 0) {
Pessoa p = pessoas.get(linha);
textNome.setText(p.getNome());
textIdade.setText(Integer.toString(p.getIdade()));
checkBrasileiro.setSelected(p.isBrasileiro());
}
}
}
});
tabela.setModel(ptm);
janela.add(panelCampos, BorderLayout.NORTH);
janela.add(panelButtons);
janela.add(new JScrollPane(tabela), BorderLayout.SOUTH);
janela.pack();
janela.setVisible(true);
}


public void limparDados() {
textNome.setText("");
textIdade.setText("");
checkBrasileiro.setSelected(false);
tabela.getSelectionModel().clearSelection();
textNome.requestFocus();
}


public void load() {
try {
StringTokenizer lineToken;
FileReader file = new FileReader(filename);
BufferedReader buffer = new BufferedReader(file);
boolean eof = false;
while (!eof) {
String line = buffer.readLine();
if (line == null)
eof = true;
else {
try {
lineToken = new StringTokenizer(line, ";");
String nome = lineToken.nextToken();
int idade = Integer.valueOf(lineToken.nextToken());
Boolean brasileiro = Boolean.valueOf(lineToken
.nextToken());
pessoas.add(new Pessoa(nome, idade, brasileiro));
} catch (Exception e1) {
// Nao grava
}
}
}
buffer.close();
file.close();
} catch (IOException e) {
// Nao faz nada
}
}


public void write() {
try {
FileWriter file = new FileWriter(filename);
BufferedWriter buffer = new BufferedWriter(file);
for (int i = 0; i < pessoas.size(); i++) {
Pessoa p = pessoas.get(i);
String linha = p.getNome() + ";" + p.getIdade() + ";" + p.isBrasileiro() + "\n";
buffer.write(linha);
}
buffer.close();
file.close();
JOptionPane.showMessageDialog(null, "Arquivo " + filename + " salvo.", "Atencao", 1);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", 0);
}
}


public static void main(String[] args) {
new Main("tablemodel.txt");
}
}




Pessoa.java


public class Pessoa {
private String nome;
private int idade;
private boolean brasileiro;


public Pessoa(String nome, int idade, boolean brasileiro) {
this.nome = nome;
this.idade = idade;
this.brasileiro = brasileiro;
}


public String getNome() {
return nome;
}


public int getIdade() {
return idade;
}


public boolean isBrasileiro() {
return brasileiro;
}


public void setNome(String nome) {
this.nome = nome;
}


public void setIdade(int idade) {
this.idade = idade;
}


public void setBrasileiro(boolean brasileiro) {
this.brasileiro = brasileiro;
}
}


Pessoa TableModel.java


import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;


public class PessoaTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<Pessoa> pessoas = new ArrayList<Pessoa>();


    public void setPessoas(List<Pessoa> pessoas) {
        this.pessoas.clear();
        this.pessoas.addAll(pessoas);
        fireTableDataChanged();
    }


    public int getRowCount() {
    return pessoas.size();
    }


    public int getColumnCount() {
    return 3;
    }


    public Object getValueAt(int rowIndex, int columnIndex) {
        Pessoa p = pessoas.get(rowIndex);
        switch (columnIndex) {
            case  0: return p.getNome();
            case  1: return p.getIdade();
            case  2: return p.isBrasileiro();
            default: return null;
        }
    }


    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
            case  0: return "Nome";
            case  1: return "Idade";
            case  2: return "Brasileira";
            default: return null;
        }
    }


    public Class getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0: return String.class;
            case 1: return Integer.class;
            case 2: return Boolean.class;
            default: return null;
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×