Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> resizable JFrame, JFrame нужно менять только по вертикали 
:(
    Опции темы
serega34
Дата 15.3.2004, 19:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как сделать так чтобы можно было менять размер JFrame только по вертикали. (Есть ли какие нибудь библиотечные методы или это нужно реализовывть программно). Спасибо.
  Вверх
DarkDS
Дата 15.3.2004, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Нужно реализовывать программно...
Код

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize( 250, 100 );
final int h = frame.getHeight();
frame.addComponentListener( new ComponentListener()
{
   public void componentHidden(ComponentEvent e){}
   public void componentMoved(ComponentEvent e){}
   public void componentResized(ComponentEvent e)
   {
       Component component = e.getComponent();
       if ( component.getHeight() != h )
       component.setSize( component.getWidth(), h );
   }
   public void componentShown(ComponentEvent e){}
});
frame.show();

PM MAIL   Вверх
serega34
Дата 19.3.2004, 20:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











DarkDS большое спасибо за совет и пример.
  Вверх
Guest
Дата 23.3.2004, 18:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо DarkDS !
и мне пригодилось smile.gif
  Вверх
ElectricalStorm
Дата 6.4.2004, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



у меня такая проблемма сделал как тут показано ресайз
но при полном раскарытии наза не делается как сделать назад ?


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
DarkDS
Дата 6.4.2004, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



То есть?
PM MAIL   Вверх
ElectricalStorm
Дата 6.4.2004, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



тоесть когда нажимашь кнопку на фрейме "развернуть наполынй экран" то он развертывается максимально только по вертикали
потом нажимаем ее же тоесть свернуть назад - и ничего не происходит sad.gif


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
LSD
Дата 6.4.2004, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Можно не менять размер когда окно распахнули на весь экран
Код

  public void componentResized(ComponentEvent e)
  {
      Frame frame = (Frame) e.getComponent();
      if(frame.getExtendedState() != Frame.MAXIMIZED_BOTH &&  frame.getHeight() != h )
        frame.setSize( component.getWidth(), h );
  }



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ElectricalStorm
Дата 6.4.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



LSD извините но неработает как вы сказали sad.gif


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
DarkDS
Дата 7.4.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



getExtendedState появилось с версии 1.4.2
Какая ява используется?
PM MAIL   Вверх
ElectricalStorm
Дата 7.4.2004, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



java 1.4.2 просто при нажатии на кнопку - "развернуть на полный экран"
фрейм у меня теперь и по вертикали растягивается а мне это не надо ... sad.gif
Добавлено @ 14:04
получилось сделать вот так ...
Код


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends JFrame  {
   public Test() {
       JPanel p = new JPanel(new BorderLayout());

       p.add(new MyComp(this), BorderLayout.EAST);
       p.add(new JButton("Test"), BorderLayout.CENTER);
       getContentPane().add(p);
   }

   public static void main(String[] args) {
       Test frame = new Test();
       frame.setResizable(false);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setBounds(300, 300, 100, 200);
       frame.setVisible(true);
   }
}

class MyComp extends JComponent implements MouseMotionListener {
   private JFrame f;

   public MyComp(JFrame f) {
       this.f = f;
       setOpaque(false);
       setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
       setPreferredSize(new Dimension(3, 3));
       addMouseMotionListener(this);
   }

   public void mouseMoved(MouseEvent e) {
   }

   public void mouseDragged(MouseEvent e) {
       f.setSize(f.getWidth() + e.getX() - 3, f.getHeight());
       f.validate();
   }
}



теперь сижу думаю как мне это дело все прикрутить к моему ГУИ ....


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
ElectricalStorm
Дата 7.4.2004, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



тока тут есть проблемма если приглядется или поставить JTextArea вместо JButton то становиться видно что
при ресайзе все мигает не клево sad.gif

как это исправить ?



--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
DarkDS
Дата 7.4.2004, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Можешь объяснить что именно ты хочешь сделать? smile.gif
PM MAIL   Вверх
ElectricalStorm
Дата 8.4.2004, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



я хочу ресайзить фрейм тока по горизонтали...
использую Ваш пример для этого ... все бы хорошо но вот беда когда я пытаюсь развернуть фрейм на полный экран он разворачиаеться довольно нормально ... но когда я его назад пытаюсь свернуть до того состояния в котором он был он не сворачивается просто напросто !
вот я хочу решить эту проблему ! но не знаю как sad.gif



--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
LSD
Дата 8.4.2004, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Вот что у меня получилось
Код

frame.addComponentListener(new ComponentAdapter()
{
  public void componentResized(ComponentEvent e)
  {
     if ( e.getComponent().getHeight() != 300 &&
         ( ( JFrame ) e.getComponent() ).getExtendedState() != JFrame.MAXIMIZED_BOTH )
    {
       int w = e.getComponent().getWidth();
       e.getComponent().setSize( w, 300 );
    }
   }
});

Размер по высоте поменять можно но он вернется к первоначальному состоянию (в данном случае 300). Окно обычным образом разворачивается на весь экран, т.е. высота его не 300, но зато потом нормально возвращается обратно. Если убрать строку
( ( JFrame ) e.getComponent() ).getExtendedState() != JFrame.MAXIMIZED_BOTH
то окно вначале распахивается на весь экран, а потом у него устанавливается размер <ширина экрана>x300 и позиция (0,0) и соответственно вернуться в начальное состояние оно не может, а снова будет распахиваться и т.д. Если вы хотите реализовать что то наподобие главного окна Delphi или CBuilder то это по моему не возможно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3111 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.