у меня есть JPanel как:не в состоянии определить текущую видимую карту в CardLayout
public class CardLayoutPanel extends JPanel {
String[] option = {"login", "register"}
public CardLayoutPanel() {
super();
combo_box = new JComboBox(option);
login_panel = new LoginForm();
register_panel = new RegisterForm();
layout = new CardLayout();
this.setLayout(new BorderLayout());
panel = new JPanel();
panel.setLayout(layout);
this.add(combo_box, BorderLayout.NORTH);
this.add(panel, BorderLayout.SOUTH);
panel.add(login_panel, "login");
panel.add(register_panel, "register");
layout.show(panel, "login");
combo_box.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox source = (JComboBox) e.getSource();
if(source.getSelectedItem().equals("login")) {
layout.show(panel, "login");
}else if(source.getSelectedItem().equals("register")) {
layout.show(panel, "register");
}
}
});
}
}
и я звонить из моего главного Calss внутри JOptionPane
CardLayoutPanel card_panel = new CardLayoutPanel();
int res = JOptionPane.showConfirmDialog(null, card_panel, "Login/Registrati",JOptionPane.OK_CANCEL_OPTION);
Теперь, если я попытайтесь получить текущую видимую карточку, такую как
if(res == JOptionPane.OK_OPTION) {
for(Component comp : card_panel.getComponents()) {
if(comp.isVisible() == true) {
JPanel current_panel = (JPanel) comp;
System.out.println(current_panel.getName());
}
}
}else if(res == JOptionPane.CANCEL_OPTION) {
System.exit(-1);
}
я получить ошибку секвенции:
Exception in thread "main" java.lang.ClassCastException: javax.swing.JComboBox cannot be cast to javax.swing.JPanel
на этой строке внутри для каждого оператора:
JPanel current_panel = (JPanel) comp;
, как я могу это исправить?
'' как я могу это исправить? "' - не бросайте JComboBox в JPanel. Передайте его JComboBox и используйте его как JComboBox. –
, но зачем он вставлял компонент в JComboBox, а не в Jpanel? – giozh
'но зачем он вставлял компонент в JComboBox, а не в Jpanel?' - Ваш код неправильный, и вы не разместили SSCCE, поэтому мы не можем сказать вам, что не так. – camickr