#java #swing
#java #swing
Вопрос:
у меня есть эта программа с небольшим количеством настроек, и она должна выглядеть следующим образом:
http://img4.imageshack.us/img4/8527/programbillede.png (извините, не могу публиковать изображения ..)
и это загружается в main, а затем скрывается, а затем, когда я запускаю некоторые другие функции и пытаюсь показать это снова, тогда это выглядит так:
http://img696.imageshack.us/img696/6886/programbillede1.png (извините, не могу опубликовать изображения ..)
несколько кнопок, которые видны, потому что, когда вы наводите курсор мыши на это, вы можете видеть их, но вы никогда не сможете увидеть 3 метки… помогите .. 🙂
любые вопросы тогда задавайте .. 🙂
вот как я называю настройки.. Домен просто скрывает части главного меню.
}else if(e.getActionCommand().equals("Indstillinger")){
doMain(false);
Exit.setVisible(true);
Exit.setBounds(650, 135, 70, 20);
returntomain.setVisible(true);
settings.setvisable(true);
ops .. забыл настройки.setvisable выглядит следующим образом..
public void setvisable(boolean doWhat){
panel1.setVisible(doWhat);
panel2.setVisible(doWhat);
panel3.setVisible(doWhat);
}
и это единственное, что позволяет получить доступ к чему-либо из моих настроек..
private Image tilfojbillede(int nr) throws IOException{
String navn=("/Resources/" Indstillinger.BilledeMappe "/" (nr 1) ".png");
return ImageIO.read(getClass().getResource(navn));
}
и настройки состоят из 3 панелей, сделанных подобным образом в конструкторе…
panel1.setBounds(50, 150, 150, 200);
panel1.setVisible(false);
panel2.setBounds(200, 150, 150, 100);
panel2.setVisible(false);
panel3.setBounds(350, 150, 150, 200);
panel3.setVisible(false);
и я вызываю эти 2 класса в моем main как глобальную функцию, подобную этой…
public static Indstillinger settings= new Indstillinger();
public static Spillet spillet= new Spillet();
я надеюсь, что вы, ребята, сможете помочь мне с этой информацией..
Комментарии:
1. Пожалуйста, опубликуйте SSCCE . В противном случае мы никак не сможем вам помочь.
2. Давайте посмотрим на часть кода-нарушителя. Постарайтесь сделать его как можно меньше, чтобы он 1) компилировался и 2) иллюстрировал проблему.
3. (Просто предположение) Попробуйте вызвать
revalidate
контейнер компонентов, видимость которых вы изменяете. Вам нужно вызыватьrevalidate
всякий раз, когда вы вносите изменения в макет, и я думаю, что невидимые элементы имеют нулевой размер, так что это было бы изменением макета.4. повторная проверка не сработала, просто попытался вызвать ее на всех 3 панелях.. не сработало .. к сожалению .. 🙂
5. ну, вы сказали контейнеры, то есть не 3 панели, а JFrame, но я не могу вызвать revalidate в main, как в this.revalidate в классе main, или я делаю что-то неправильно?
Ответ №1:
Вам нужно вызвать revalidate();
и, возможно repaint();
, также.
Комментарии:
1. я не могу это вызвать … я получаю сообщение об ошибке, если я вызываю это в main и если я вызываю это в своем классе настроек..