JTable没有显示

在我的应用程序中,一切都分布

  • 在一个动作中,应用程序从DB中检索数据并保存在ArrayList<T>
  • 我创build一个RelativeTableModel的对象,我传递ArrayList<T>

     public void RelationsClicked() { ArrayList<Relation> data = myParent.dbOperation.getRelations(); RelativeTableModel tModel = new RelativeTableModel(data); // subclass of AbstractTableModel myParent.SetBrowsePanelData(tModel); myParent.SetMainPanel(CashAccountingView.BROWSEPANEL); } 
    • 我有JScrollPane中有一个JTableBrowseListPanel类。 它的实例已经在主应用程序中创build。
    • 我将模型传递给BrowseListPanel并最终显示面板。

码:

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

但是我没有看到Table 。 我相信,因为BrowseListPanel (包含JTable )的对象已经被创build,所以后来添加了TableModel 。 所以应该在setTModel()触发某种事件。

我对吗? 如果是的话,应该抛出什么事件,应该怎样实施。

在表上调用setModel()应该足够了,但是可以明确地在模型上调用fireTableStructureChanged()作为一种帮助解决问题的方法。

另外,请确认您正在使用事件分派线程 。

附录:这是一个显示基本方法的简介。

在这里输入图像描述

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