Это проблема, у меня есть класс MainWindow, который расширяет JFrame в одной из процедур установки. Я установил макет класса на новый CardLayout ().Это все работает нормально, но когда я иду, чтобы запросить макет из JFrame и привести то, что он возвращает к CardLayout, я получаю ошибки, потому что он возвращает BorderLayout.Я думаю, что вы получаете изображение из слуха.
Пожалуйста, найдите код ниже:
public MainWindow()
{
initWindow();
}
public void actionPerformed(ActionEvent e)
{
CardLayout m = (CardLayout)super.getLayout();
m.next(this);
}
private void initWindow()
{
super.getContentPane().setLayout(_mainLayout);
super.setTitle(_WINDOW_NAME);
super.setSize(_DEFAULT_WINDOW_SIZE);
super.setLocationRelativeTo(null);
super.setAlwaysOnTop(true);
super.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
super.setResizable(false);
init_buttons_panel();
super.add(_buttons_panel, "bpanel");
}
Я вижу, что код не идеален, это потому, что я пытался все, чтобы решить проблему,Да, я понимаю, что такое приведение не очень хорошо, но это всего лишь тестовый код, чтобы доказать это.Да, и _mainLayout, как вы уже догадались, CardLayout.
Я также читал, как использовать макет карты, и мой код не делает ничего необычного.