 <blockquote> <p>I want to create 2 JTabbedPanes that will have the same JTable but different values in one of the columns. Right now for some reason only one of the tabs is showing up and I am not sure why. Also am I doing this the best way by creating 2 different DefaultTableModel's?</p> </blockquote> <ul> <li><p>create only one DefaultTableModel, </p></li> <li><p>then all changes are synchonized, </p></li> <li><p>each of JTables can have different ColumnModel, Renderers, etc</p></li> </ul> <p><a href="http://sscce.org/" rel="nofollow noreferrer">simplest (SSCCE) code as is possible</a></p> <p><img src="https://i.stack.imgur.com/qrgOV.jpg" alt="enter image description here"><img src="https://i.stack.imgur.com/W28ua.jpg" alt="enter image description here"></p> <pre><code>import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class MyTabbedPane { private JTabbedPane tabbedPane = new JTabbedPane(); private JFrame f = new JFrame(); private String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; private Object[][] data = { {"Kathy", "Smith", "Snowboarding", new Integer(5), (false)}, {"John", "Doe", "Rowing", new Integer(3), (true)}, {"Sue", "Black", "Knitting", new Integer(2), (false)}, {"Jane", "White", "Speed reading", new Integer(20), (true)}, {"Joe", "Brown", "Pool", new Integer(10), (false)} }; private DefaultTableModel model = new DefaultTableModel(data, columnNames) { private static final long serialVersionUID = 1L; @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; public MyTabbedPane() { tabbedPane.addTab("Tab1", new JScrollPane(new JTable(model))); tabbedPane.addTab("Tab2", new JScrollPane(new JTable(model))); tabbedPane.addTab("Tab3", new JScrollPane(new JTable(model))); tabbedPane.addTab("Tab4", new JScrollPane(new JTable(model))); tabbedPane.setTabPlacement(JTabbedPane.TOP); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(tabbedPane, BorderLayout.CENTER); f.pack(); f.setVisible(true); } public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MyTabbedPane frame = new MyTabbedPane(); } }); } } </code></pre>