从容器(框架)中删除组件(面板)的最简单方法是保留对其的引用,然后调用
Container.remove(Component)ie:
private Thread controller = new Thread() {public void run() { final Component panel1 = generatePartnerSelectionPanel(); // First we set the initial pane (for the selection of partner). SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().add(panel1); frame.invalidate(); frame.validate(); } }); // Update the pane for the selection of the parnter. for (int i=40; i>0; i=i-1) { final int sec = i; SwingUtilities.invokeLater(new Runnable() { public void run() { timeLeftLabel.setText(sec + " seconds left."); } }); try {Thread.sleep(1000);} catch (InterruptedException e) {} if (partnerSubmitted) {break;} } // For the given user the selection phase is finished (either the time is over or form was submitted). SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().remove(panel1); frame.getContentPane().add(generateWaitForGamePanel()); frame.invalidate(); frame.validate(); } });}};我没有测试此代码,但它应该可以工作。



