2014-02-17 2 views
0

Я это ActionListener добавил к кнопке:JButton удаление всех остальных JComponent от JPanel

//The ActionListener for the home button 
ActionListener homeActionListener = new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
     removeAll(); 
     Home home = new Home(); 
     add(home); 
    } 
}; 

Это код для JPanel и JButton:

//creating the jpanel which will hold the buttons 
JPanel buttonPanel = new JPanel(); 
buttonPanel.setLayout(null); 
buttonPanel.setBounds(0,0,600,100); 
buttonPanel.setBackground(Color.GRAY); 
add(buttonPanel); 

//creating the jbutton to send the user to the home page 
JButton home = new JButton("Home"); 
home.setBounds(25,25,100,50); 
buttonPanel.add(home); 

Как я могу сделать это так, он удаляет каждый компонент jframe, за исключением того jpanel, который называется buttonPanel?

+0

У вас есть другие функции 'JPanel' в вашей форме? – BitNinja

+0

Не уверен, что это возможно (нет моего компьютера в данный момент), но попробуйте вызвать removeAll() на панели кнопок, и он должен удалить элементы внутри панели – user2277872

ответ

4

Возможным решением может быть создание центральной панели, которая содержит все остальные компоненты, и вместо этого просто использовать removeAll на этом контейнере.

Будьте осторожны при вызове removeAll на JFrame, он удалит корневую панель, которая на самом деле не является тем, что вы хотите.

А что HovercraftFullEels сказал

4
  1. Остановить использование нулевого макета и setBounds. Хотя использование нулевого макета может показаться новичку лучшим способом создания сложных графических интерфейсов, это ошибка, и больше вы создаете графический интерфейс Swing, тем больше вы учитесь уважать и использовать менеджеров макетов и видите, что эти существа очень помогают в создании гибких, красивых и, если нужно, сложные GUI. Затем вы можете позволить им самостоятельно упорядочить их, вызвав пакет(), прежде чем устанавливать их видимыми.
  2. Swap JPanels с использованием CardLayout. Tutorial link here.

.... и что MadP должен сказать!

+0

благодаря тому, что я не намерен работать с нулевой компоновкой, на данный момент причина, по которой я хочу узнать о качелях больше –

+2

@ user3319763 Затем вам следует сосредоточиться на менеджерах макетов, Swing сильно зависит от них – MadProgrammer

1
getContentPane().removeAll(); 

RemoveAll() удалить все компоненты на раме.

Смежные вопросы