intellij и swing - изменение размера jpanel - PullRequest
1 голос
/ 26 мая 2011

Я использую intellij с swing.
Мое приложение работает на разных компьютерах с разными мониторами.
Я хочу отображать свою форму в разных размерах.

У меня JPanel (не main. Inner jpanel) установлен в (-1,670) в редакторе intellij GUI.
И я пытаюсь изменить его с помощью этого кода:

  MyFormUI myform = new MyFormUI();
  if (thisIsTheCase){
      myform.setLongView() 
  }

и в MyFormUI ->

  public void setLongView(){ 
       myPanel.setPrefferedSize(new Dimension(-1, 1000))
       myPanel.repaint() ;
       revalidate();    
       // I tried also repaint and revalidate on a higher jpanel in the hierarchy
  }

Когда я изменяю его в редакторе графического интерфейса - он меняется, но не через код.
Есть предложения?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011
myPanel.setPrefferedSize(new Dimension(-1, 1000))
myPanel.repaint();
revalidate();     

Не уверен, что делает -1.

Код должен быть:

myPanel.revalidate();     
myPanel.repaint();

Функция revalidate () фактически восстанавливает компоновку компонента, а перерисовка просто рисует его. В своем коде вы перерисовываете перед тем, как переделывать макет.

0 голосов
/ 26 мая 2011

Предпочитаемый размер, как вы можете догадаться, только предпочтителен.Если базовый менеджер компоновки не хочет использовать этот параметр, он может отказаться от него.IntelliJ IDEA использует свой собственный менеджер макетов, поэтому вам необходимо проверить, позволяют ли политики горизонтального и вертикального размеров панелей изменять размеры.

Будет проще диагностировать проблему, если вы опишите свой макет более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...