JTable non mostra

Nella mia applicazione tutto è distribuito.

Codice:

 public void SetBrowsePanelData(AbstractTableModel tModel) { browsePanel.setTModel(tModel); } // BrowseListPanel's Code public void setTModel(AbstractTableModel tModel) { this.tModel = tModel; // tModel = AbstractTableModel } // Show the Panel public void SetMainPanel(String panel) { activePanel = panel; SetFontSize(); cards.show(mainPanel, panel); mainPanel.revalidate(); mainPanel.repaint(); } 

Ma non vedo il Table . Credo che l’object di BrowseListPanel (contenente il JTable ) sia già stato creato e successivamente sia stato aggiunto TableModel . Quindi una sorta di evento dovrebbe essere setTModel() in setTModel() .

Ho ragione? In tal caso, quale evento dovrebbe essere lanciato e quale dovrebbe essere la sua attuazione.

setModel() sulla tabella dovrebbe essere sufficiente, ma potresti chiamare fireTableStructureChanged() sul modello esplicitamente come un modo per aiutare a risolvere le cose.

Inoltre, verifica che stai lavorando sul thread di invio dell’evento .

Addendum: ecco una nota che mostra l’approccio di base.

inserisci la descrizione dell'immagine qui

 import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** @see http://stackoverflow.com/questions/8257148 */ public class SwapTableModel extends JPanel { public SwapTableModel() { final JTable table = new JTable(Model.Alpha.model); table.setPreferredScrollableViewportSize(new Dimension(128, 32)); this.add(new JScrollPane(table)); final JComboBox combo = new JComboBox(); for (Model model : Model.values()) { combo.addItem(model); } this.add(combo); combo.addActionListener(new ActionListener() { @Override public void actionPerformsd(ActionEvent e) { Model model = (Model) combo.getSelectedItem(); table.setModel(model.model); } }); } private enum Model { Alpha(), Beta(); private DefaultTableModel model; private Model() { Object[] data = {this.toString()}; this.model = new DefaultTableModel(data, 1); model.addRow(data); } } private void display() { JFrame f = new JFrame("SwapTableModel"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new SwapTableModel().display(); } }); } }