bir jTable
var, burada jComboBox
bazı arama dayalı bir arama sonucu yüklendi. Bunun için DefaultTableModel
kullanıyorum, diğer jTables için ben TableModel
kullanın.Özel TableModel - Tüm sorgularda aynı model
jTable'da gösterilen alanlar, aramadan sonra her zaman aynıdır, ancak jTable'da gösterilen alanlar her zaman aynı olmadığında çalışacak bir TableModel
nasıl oluşturabilirim? Her olası kombinasyon için bir tane oluşturmadan mı?
İlk senaryoda, jComboBox
temelli bir arama gerçekleştiriyorum ve tüm verileri döndürür ve jTable
'da gösterir. İkinci olarak, jRadioButtons
numaralı telefondan geri döndüğüm object
numaralı telefondan görmek istediklerimi seçiyorum. İlk senaryodan
jTable
.
[! [İkinci senaryodan http://i.stack.imgur.com/FPElv.png][1]][1]
jTable
. benim TableModels
ait
Bir: şimdilik
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import modelo.Setor;
public class ModeloSetor extends AbstractTableModel {
private List<Setor> setores;
public ModeloSetor() {
setores = new ArrayList<Setor>();
}
@Override
public int getRowCount() {
return setores.size();
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Setor setor = setores.get(rowIndex);
switch (columnIndex) {
case 0:
return setor.getId();
case 1:
return setor.getNome();
default:
return "";
}
}
public void adicionar(Setor setor) {
setores.add(setor);
fireTableRowsInserted(setores.size() - 1, setores.size() - 1);
}
public void remover(Setor setor) {
setores.remove(setor);
fireTableRowsInserted(setores.size() - 1, setores.size() - 1);
}
public Setor getSetor(int linha) {
return setores.get(linha);
}
public ModeloSetor(List<Setor> lista) {
this();
setores.addAll(lista);
}
public void adicionaLista(List<Setor> lista) {
int i = setores.size();
setores.addAll(lista);
fireTableRowsInserted(i, i + lista.size());
}
public void limpaLista() {
if (setores.size() > 0) {
int i = setores.size();
setores.clear();
fireTableRowsDeleted(0, i - 1);
}
}
@Override
public String getColumnName(int coluna) {
switch (coluna) {
case 0:
return "Id";
case 1:
return "Nome";
default:
return "";
}
}
}
teşekkürler. o sütunları "İd" ve "Ad" i düğmesine tıklayın her zaman çoğaltılır gösteriyor,
private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt) { jTableResultado.getColumnModel().getColumn(0).setMaxWidth(50); jTableResultado.getColumnModel().getColumn(1).setPreferredWidth(180); jTableResultado.getColumnModel().getColumn(2).setPreferredWidth(250); jTableResultado.getColumnModel().getColumn(3).setPreferredWidth(310); jTableResultado.getColumnModel().getColumn(4).setPreferredWidth(100); jTableResultado.getColumnModel().getColumn(5).setPreferredWidth(250); jTableResultado.getColumnModel().getColumn(6).setPreferredWidth(150); jTableResultado.getColumnModel().getColumn(7).setPreferredWidth(150); jTableResultado.getColumnModel().getColumn(8).setPreferredWidth(100); jTableResultado.getColumnModel().getColumn(9).setPreferredWidth(100); PersonDao personDao = new PersonDao(); Person person= new Person(); Condutor condutor = new Condutor(); DefaultTableModel modelo = (DefaultTableModel) jTableResultado.getModel(); modelo.setNumRows(0); TableColumnManager tcm = new TableColumnManager(jTableResultado); Date dataInicial = (dataInicialParaInserir(jTDataInicial.getText())); Date dataFinal = (dataFinalParaInserir(jTDataFinal.getText())); if (jRadioCodigoPerson.isSelected()) { tcm.hideColumn("Id"); } else { tcm.showColumn("Id"); } if (jRadioNamePerson.isSelected()) { tcm.hideColumn("Name"); } else { tcm.showColumn("Name"); } List<Object[]> listaObjetos = personDao.consultarDataParametros(person, dataInicial, dataFinal, condutor); for (Object[] t : listaObjetos) { modelo.addRow(new Object[]{t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9]}); } }
Ama: Burada
ben çalışıyorum yöntemin bir parçasıdır.
[* Strateji düzenini *] kullanın (https://en.wikipedia.org/wiki/Strategy_pattern). Strateji modeli önerisi için – trashgod
+1 (ilginç yaklaşım). * İkincisi, bazı jRadioButtons döndürülen nesneyi görmek istediğimi seçin. * Burada gösterildiği gibi [burada] (http://stackoverflow.com/a/6796673/1795530) sütunları gizleme/gösterme ve [buradan] (http: // stackoverflow.com/a/6798013/1795530)? – dic19
@ dic19: Ben de [* strateji desenini uygulamak için yararlı enumlar bul, *] (http://stackoverflow.com/a/15076852/230513) özellikle 'JComboBox' ile. – trashgod