У меня есть проблема с изменением размера некоторых JPanels в приложении с графическим интерфейсом. Приложение имеет основной JLayeredPane, который содержит 2 других JPanels. В JPanel 1 у меня есть форма для входа и кнопка. Когда я нажимаю кнопку, я хочу сделать первую JPanel невидимой, а вторую JPanel видимой (эта панель больше первой), но остается того же размера. Ниже приведен соответствующий код. Кто-нибудь может мне помочь?
int width=300, height=300;
JLayeredPane mainPanel;
JPanel panel1;
JPanel panel2;
panel1.setBounds(0,0,width,height);
panel1.setBackground(new Color(251, 249, 236));
mainPanel.add(panel1, JLayeredPane.DEFAULT_LAYER);
panel2.setBounds(0, 0, width+200, height+200);
panel2.setBackground(new Color(255, 0, 0));
mainPanel.add(panel2, JLayeredPane.DEFAULT_LAYER);
И код нажатой кнопки:
setSize(width+200, height+200);
panel1.setVisible(false);
panel2.setVisible(true);
mainPanel.setSize(width+200, height+200);
mainPanel.validate();
mainPanel.repaint();
Вот код для JLayredPane:
GroupLayout mainLayout=new GroupLayout(getContentPane());
getContentPane().setLayout(mainLayout);
mainLayout.setHorizontalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, width, GroupLayout.PREFERRED_SIZE))
);
mainLayout.setVerticalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, height, GroupLayout.PREFERRED_SIZE))
);
LE:
для кнопки:
setSize(width+200, height+200);
mainPanel.setSize(width+200, height+200);
mainPanel.remove(panel1);
mainPanel.remove(panel2);
mainPanel.add(panel2, JLayeredPane.DEFAULT_LAYER);
actualizare();
mainPanel.validate();
mainPanel.repaint();
validate();
repaint();
Функция:
void actualizare(){
GroupLayout mainLayout=new GroupLayout(getContentPane());
getContentPane().setLayout(mainLayout);
mainLayout.setHorizontalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, width+200, GroupLayout.PREFERRED_SIZE))
);
mainLayout.setVerticalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, height+200, GroupLayout.PREFERRED_SIZE))
);
}