我正在使用 JPanel(更改其組件),但我想從外部 JFrame 更改它。抱歉,我用 Netbeans 編寫了這段代碼(我知道它放了一些這個問題不需要的東西)并嘗試清理編輯它,因為真正的代碼更大這里是 JPanel 的代碼,名稱為“MyPanel”。 public class MyPanel extends javax.swing.JPanel { private javax.swing.JButton filling = new javax.swing.JButton(); private javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); private javax.swing.JTable myTable = new javax.swing.JTable(); private final javax.swing.table.DefaultTableModel INITIAL_TABLE_MODEL = new javax.swing.table.DefaultTableModel( new Object[][]{}, new String[]{"Text", "Integer"} ); public MyPanel() { initComponents(); //callFilling(); // INNER CALL! } private void initComponents() { filling.setText("filling"); filling.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fillingActionPerformed(evt); } }); myTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Text", "Integer" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.Integer.class }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } }); jScrollPane1.setViewportView(myTable); ); } 當callFilling();是從 JPanel (審查 INNER CALL)工作!,但從 JFrame (審查 //OUTER CALL)不工作!查看此問題Update content of JPanel on a frame on button click in another frame我使用 的建議revalidate(); repaint(); 代碼,但不起作用。如何解決這個問題?
1 回答

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
MyPanel myPanel = addNewTab();
myPanel.callFilling(); //OUTER CALL!
myPanel.revalidate();
myPanel.repaint();
addNewTab();
不確定您要做什么。
您創建一個 MyPanel 對象并在其上調用 callFilling() 以設置 TableModel 中的值。但是您從未真正將面板添加到框架中。
只需在將組件添加到可見面板時調用 revalidate() 和 repaint()。
然后你調用addNewTab()which :
MyPanel myPanel = new MyPanel();
myTabbed.insertTab(title, null, new MyPanel(), null, idx);
return myPanel;
同樣,這對您創建 2 個 MyPanel 對象沒有任何意義。您將一個對象添加到選項卡式窗格,然后返回第二個 MyPanel 對象。
所以你已經創建了 3 個 MyPanel 對象。
我真的不確定您要做什么。我不知道您是否要嘗試將面板添加到框架中,或者將面板添加到選項卡式窗格中,所以我真的無法提出具體建議。
在任何情況下,您都需要構建您的代碼,以便僅在 MyObject 對象上創建,并且您需要將該面板添加到選項卡式窗格或框架,但不能同時添加。
添加回答
舉報
0/150
提交
取消