我正在使用 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
提交
取消