从容器中取出组件后,它进入该
invalidate状态。把它带回来给
valid你要的状态
revalidate和
repaint那个。在您的情况下,您将直接从中添加/删除组件,
Jframe具体取决于Java版本,您可以这样做:
frame.revalidate(); // For Java 1.7 or aboveframe.getContentPane().validate(); // For Java 1.6 or belowframe.repaint();
这是一个可以帮助您的工作示例:
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Assignment{ private Jframe frame; private JPanel firstPanel; private JPanel secondPanel; private JButton forwardButton; private JButton backButton; private void displayGUI() { frame = new Jframe("Assignment"); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); firstPanel = new JPanel(); firstPanel.setOpaque(true); firstPanel.setBackground(Color.BLUE); secondPanel = new JPanel(); secondPanel.setOpaque(true); secondPanel.setBackground(Color.RED); forwardButton = new JButton("Forward"); forwardButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { frame.remove(firstPanel); frame.add(secondPanel); frame.revalidate(); // For Java 1.7 or above. // frame.getContentPane().validate(); // For Java 1.6 or below. frame.repaint(); } }); backButton = new JButton("Back"); backButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { frame.remove(secondPanel); frame.add(firstPanel); frame.revalidate(); // For Java 1.7 or above. // frame.getContentPane().validate(); // For Java 1.6 or below. frame.repaint(); } }); firstPanel.add(forwardButton); secondPanel.add(backButton); frame.add(firstPanel); frame.setSize(300, 300); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Assignment().displayGUI(); } }); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)