Пакет Java без изменения размера - PullRequest
0 голосов
/ 14 апреля 2010

Я сейчас изучаю Java и у меня следующий вопрос:

Я добавляю свои элементы управления в JFrame и затем упаковываю () перед отображением.

запускает приложение, и все очень хорошо.

Мне было интересно, есть ли способ запретить пользователю изменять размер окна приложения?

также существует ли способ расширения изображения в JLabel при изменении пользователем окна приложения?

на данный момент у меня это как:

    constraints.fill = GridBagConstraints.BOTH;
    constraints.anchor = GridBagConstraints.CENTER;

и он только центрирует изображение, я хотел бы иметь возможность увеличивать / уменьшать изображение.

спасибо.

Ответы [ 4 ]

3 голосов
/ 14 апреля 2010

Мне было интересно, есть ли способ остановиться пользователь от изменения размера приложения окна?

Если вы не хотите, чтобы пользователи вообще могли изменять размер вашего окна, тогда вы можете сделать

frame.setResizable (false);



Я не уверен, что эту технику можно успешно использовать одновременно с pack(). Вы, конечно, должны попробовать, но я помню, что была проблема, если вы делаете:

frame.setResizable (false);
pack();

тогда pack() просто не делает то, что должен, и если вы делаете:

pack();
frame.setResizable(false);

тогда ваше окно становится немного более узким, чем после pack(). Конечно, можно найти какой-то обходной путь (или, может быть, это просто мой неудачный опыт).

2 голосов
/ 14 апреля 2010

для первого вопроса вы можете запретить пользователю изменять размер вашего окна, используя метод setResizable(boolean):

frame.setResizable(false);

Я не использую GridBagLayout, поэтому не могу помочь вам со вторым вопросом.

1 голос
/ 14 апреля 2010
also is there a way to for the image in JLabel to expand as the user changes the application window?

Да, вам нужно создать свой собственный класс LabelUI и установить его на свой ярлык с помощью setUI(). В вашем пользовательском классе LabelUI вам придется переопределить getPreferredSize и нарисовать imageIcon, как вы хотите.

Это немного программно, вы можете посмотреть на источник BasicLabelUI, чтобы понять, как это делается. (http://www.java2s.com/Open-Source/Java-Document/Apache-Harmony-Java-SE/javax-package/javax/swing/plaf/basic/BasicLabelUI.java.htm)

или

вы можете переопределить paintComponent() API JLabel, создав собственный расширенный класс JLabel.

1 голос
/ 14 апреля 2010

Чтобы предотвратить изменение размера окна, вы можете просто вызвать setResizable(false) в своем окне или (J) Frame.

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

...