1
這是我的系統的屏幕,它列出了包含名稱,可用性,代碼的String []的ArrayLists的可用雜誌(「revistas」)和書籍(「livros」)。當新行被添加時,JTable不更新值
一切工作正常,除了表顯示空白。
這是我的課,我裁剪了變量聲明。
函數「listar」在底部是用數據加載JTable的東西。
我也困惑於如何使用有效和美觀的面板佈局,如果有人可以提供一個側面暗示。
public class TelaListaDoc extends JPanel {
public TelaListaDoc(Biblioteca biblio) {
this.biblioteca = biblio;
this.inicializado = false;
setLayout(new BorderLayout());
cLayout = new CardLayout();
panelMain = new JPanel();
panelTable = new JPanel(cLayout);
panelRevista = new JPanel();
panelLivro = new JPanel();
String[] nomes = {"Título", "Nº disponíveis", "Código"};
modelLivro = new DefaultTableModel(nomes, 0);
modelRevista = new DefaultTableModel(nomes, 0);
tableRevista = new JTable(modelLivro);
tableLivro = new JTable(modelRevista);
botaoVoltar = new JButton("Voltar");
botaoRevista = new JButton("Revistas");
botaoLivro = new JButton("Livros");
panelRevista.add(new JScrollPane(tableRevista));
panelLivro.add(new JScrollPane(tableLivro));
panelTable.add(panelRevista, "Revista");
panelTable.add(panelLivro, "Livro");
panelTable.setVisible(true);
panelMain.add(botaoRevista);
panelMain.add(botaoLivro);
panelMain.add(panelTable);
panelMain.add(botaoVoltar);
panelMain.setVisible(true);
add(panelMain);
botaoVoltar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
biblioteca.chamaTelaBiblioteca();
}
});
botaoLivro.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
cLayout.show(panelTable, "Livro");
}
});
botaoRevista.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
cLayout.show(panelTable, "Revista");
}
});
}
public void listar(ArrayList<String[]> livros, ArrayList<String[]> revistas) {
if (!this.inicializado) { //If not initialized, only doing it once.
this.livros = livros;
this.revistas = revistas;
for (String[] livro : this.livros) {
modelLivro.addRow(livro);
}
for (String[] revista : this.revistas) {
modelRevista.addRow(revista);
}
this.inicializado = true;
modelLivro.fireTableDataChanged();
modelRevista.fireTableDataChanged();
panelLivro.setVisible(true);
panelRevista.setVisible(true);
cLayout.show(panelTable, "Revista");
}
}
}
爲了更好地幫助越早,後期一個[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)或[SSCCE](http://www.sscce.org/)(簡短的,獨立的,正確的示例)。 –
你在構造函數 – Jegg
*中說得太多了,「如果有人可以給出一個側面提示,如何使用有效和美觀的面板佈局。」*你對「好看的面板」是什麼樣子有所瞭解? – MadProgrammer