JTable no se muestra

En mi aplicación, todo se distribuye.

Código:

 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(); } 

Pero no veo la Table . Creo que como el objeto de BrowseListPanel (que contiene JTable ) ya está creado y luego se agrega TableModel . Por lo tanto, se debe setTModel() algún tipo de evento en setTModel() .

¿Estoy en lo cierto? Si es así, qué evento debería lanzarse y cuál debería ser su implementación.

Invocar setModel() en la tabla debería ser suficiente, pero puede llamar a fireTableStructureChanged() explícitamente en el modelo como una forma de ayudar a resolver las cosas.

Además, verifique que esté trabajando en el hilo de envío del evento .

Adición: Aquí hay una sscce que muestra el enfoque básico.

enter image description here

 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 actionPerformed(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(); } }); } }