2012-05-08 5 views
0

Я нахожусь в процессе создания простой программы java swing, которая позволит пользователю играть в блэкджек. У меня есть 10-15 классов, которые представляют 1 "экран" в программе, каждый из них расширяет JLayeredPane и реализует прослушиватель действий. У меня также есть другие классы для колоды, карты, раунда, игрока и т. Д.Как динамически перерисовывать JPanels в JFrame?

Тогда в другом классе есть два свойства: массив arra (который содержит все панели) и Jframe one (к которому все панели будут идти) , с общедоступным статическим недействительным.

Затем в том же классе я сделать две вещи, метод, который заменяет панели:

public void screenInit(int i) 
{ 
    one.setContentPane(arra[i-1]); 
    one.invalidate(); 
    one.validate(); 
    one.repaint(); 
} 

Затем я создаю объект этого класса в PSVM и начать ввод в первой панели.

Итак, мой вопрос заключается в том, что первая панель вверху, которая имеет прослушиватель действий, прикрепленный к JButton, как он обращается к JFrame, созданному в классе, содержащем JFrame и массиве, поэтому он может использовать вышеописанный метод. Прямо сейчас, мне нужно создавать новый кадр каждый раз, поэтому он строится на вершине друг друга?

Если это невозможно, как мне организовать свои классы таким образом, чтобы несколько кнопок с каждой панели приводили друг к другу?

Благодаря

ответ

4

1) в случае, если вы используете Swing, JComponents, то вы можете удалить строку кода one.invalidate();, потому что нет причин установить статус для текущего LayoutManager, что JPanel не является действительным элементом текущего отображаемого GUI

2) если вы remove/modify/add JComponent (s) наверх уже видно Container, то у меня есть успех строк кода revalidate() и repaint()

3) никто не знает, что вы реальный вопрос (ы), и никто не может видеть код на вашем мониторе, лучше было бы изолировать проблему с перерисовкой графического интерфейса пользователя и отредактировать ваш вопрос с помощью SSCCE

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