Установка минимального размера для окна в java swing
У меня есть JFrame, у которого 3 JPanels в GridBagLayout..
Теперь, когда я минимизирую окна, после определенного предела, третий JPanel имеет тенденцию исчезать.
Я попытался установить минимальный размер JFrame, используя setMinimumSize (новый размер (int, int)), но не добился успеха. Окна все еще могут быть сведены к минимуму.
Итак, я на самом деле хочу создать пороговое значение, что мое окно не может быть сведено к минимуму после определенного предела.
Как я могу это сделать?
Код: -
import java.awt.Dimension;
import javax.swing.JFrame;
public class JFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello World");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(400, 400));
frame.setVisible(true);
}
}
также:
[email protected]:~/java$ java --showversion
java version "1.5.0"
gij (GNU libgcj) version 4.4.1
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Usage: gij [OPTION] ... CLASS [ARGS] ...
to invoke CLASS.main, or
gij -jar [OPTION] ... JARFILE [ARGS] ...
to execute a jar file
Try `gij --help' for more information.
[email protected]:~/java$
Дает мне вывод, например
![alt text]()
** ОБНОВЛЕНИЕ: ** То же самое происходит при запуске, хотя NetBeans IDE дает ожидаемый результат. Когда я запускаю компилятор java JFrameExample, у меня возникают проблемы. Теперь, что это значит?
Ответы
Ответ 1
Документация сообщает мне, что это поведение зависит от платформы. Особенно, поскольку следующий код кода работает для меня по желанию в Windows Vista:
import java.awt.Dimension;
import javax.swing.JFrame;
public class JFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello World");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(100, 100));
frame.setVisible(true);
}
}
Ответ 2
Фактически есть способ обеспечить минимальный размер на любой платформе. Вам нужно установить минимальный размер JFrame на минимальный размер его области содержимого, а затем вам нужно написать ComponentAdapter и переопределить компонентResized. Затем вы просто используете размер getSize и getMinimum на вашем JFrame и подставляете ширину и/или высоту с минимальной шириной или высотой, если она больше. Предполагая, что вы расширяете JFrame:
this.addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e){
Dimension d=YourJFrame.this.getSize();
Dimension minD=YourJFrame.this.getMinimumSize();
if(d.width<minD.width)
d.width=minD.width;
if(d.height<minD.height)
d.height=minD.height;
YourJFrame.this.setSize(d);
}
});