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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ?? круглое окно в JAVA, возможно ли это ? (-) 
V
    Опции темы
polosatij
  Дата 22.3.2004, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



...


--------------------
PM   Вверх
AntonSaburov
Дата 22.3.2004, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



На чистой JAVA такое IMHO сделать не получится.
PM MAIL WWW ICQ   Вверх
LSD
Дата 24.3.2004, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



JInternalFrame можно сделать прозрачным, правда есть проблемы с перересовкой заднего фона (не во всех режимах drag-а он корректно перересовывается, но в некоторых все ОК).

А обычный JFrame можно попробовать сделать: ставим setDefaultLookAndFeelDecorated(true) и инсталим свой LookAndFeel который рисует окно нужной геометрии. Судя по тому что окна в Metal слегка скругленны по краям, нам ничто не мешает "скруглить" их окончательно tounge.gif . Но написание своего LookAndFeel задача не из легких, это во первых. А во вторых полезная площадь окна (та которую занимает RootPane) будет равна площади вписанного прямоугольника.


--------------------
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   Вверх
AntonSaburov
Дата 25.3.2004, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 118



Цитата
обычный JFrame можно попробовать сделать: ставим setDefaultLookAndFeelDecorated(true) и инсталим свой LookAndFeel который рисует окно нужной геометрии. Судя по тому что окна в Metal слегка скругленны по краям, нам ничто не мешает "скруглить" их окончательно

Интересное предложение smile.gif
Задача просто огромная, но теоретически возможная.

PM MAIL WWW ICQ   Вверх
ElectricalStorm
Дата 25.3.2004, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот например овальные кнопки я писал можно и круглые и какие хочешь

Код

import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;


public class RoundButton extends JButton {
   public RoundButton(String label) {
       super(label);
       Dimension size = getPreferredSize();
       size.width = size.height = Math.max(size.width, size.height);

       setPreferredSize(new Dimension(50,20));
       setContentAreaFilled(false);
   }
   protected void paintComponent(Graphics g) {
       if (getModel().isArmed()) {
           g.setColor(Color.lightGray);
       } else {
           g.setColor(getBackground());
       }
       g.fillRoundRect(0,0,getSize().width - 1,getSize().height - 1, 15,15);
       //g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);

       super.paintComponent(g);
   }
   protected void paintBorder(Graphics g) {
       g.setColor(getForeground());
       g.drawRoundRect(0,0,getSize().width - 1,getSize().height - 1, 15,15);
       //g.drawOval(0, 0, getSize().width - 1, getSize().height - 1);
   }
   Shape shape;
   public boolean contains(int x, int y) {
       if (shape == null || !shape.getBounds().equals(getBounds())) {
           shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
       }
       return shape.contains(x, y);
   }

   public static void main(String[] args) {
       JButton b1 = new RoundButton("1");
       JButton b2 = new RoundButton("2");
       JButton b3 = new RoundButton("3");
       JButton b4 = new RoundButton("4");
       b1.setBackground(Color.gray); b2.setBackground(Color.gray);
       b3.setBackground(Color.gray); b4.setBackground(Color.gray);

       JFrame frame = new JFrame();
       frame.getContentPane().setBackground(Color.white);
       frame.getContentPane().add(b1);frame.getContentPane().add(b2);
       frame.getContentPane().add(b3);frame.getContentPane().add(b4);
       frame.getContentPane().setLayout(new FlowLayout());
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setBounds(300,200,150, 150);
       frame.setVisible(true);
   }
}






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


Leprechaun Software Developer
****


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

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



Я попробовал это сделать ничего не получается sad.gif . Все окно закрашивается background, причем у него даже обнуляется альфа компонента.
Единственное что у меня получилось это псевдо прозрачность, с помощью Robot создаем скриншот экрана а потом рисуем поверх него. Но то что находится под ним не обновляется sad.gif (только в ручном режиме и для этого надо спрятать окно, а это заметно взгляду). В общем для Splash screen подойдет, но для серьезного применения не годится.


--------------------
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   Вверх
Бекетов Роман aka Yaiu
Дата 6.4.2004, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот Нарыл
Код


import javax.swing.*;
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;


public class Tw extends JWindow
       implements MouseMotionListener, FocusListener {

   Image img, tim;
   Graphics tig;
   Point mp;

   public Tw() {
       addMouseMotionListener(this);
       setBounds(170, 170, 100, 100);
       capture();
       setVisible(true);
       addFocusListener(this);
   }

   public void focusGained(FocusEvent fe) {
       Point p = getLocation();
       setLocation(11111, 0);
       capture();
       setLocation(p);
   }

   public void focusLost(FocusEvent fe) {
   }

   public void capture() {
       Dimension d = Toolkit.getDefaultToolkit().
           getScreenSize();
       try {
           Robot r = new Robot();
           Rectangle rect = new Rectangle(0, 0,
               d.width, d.height);
           img = r.createScreenCapture(rect);
       } catch (AWTException awe) {
           System.out.println("robot excepton occurred");
       }
   }

   public void mouseDragged(MouseEvent m) {
       Point p = m.getPoint();
       int x = getX() + p.x - mp.x;
       int y = getY() + p.y - mp.y;
       setLocation(x, y);
       Graphics g = getGraphics();
       paint(g);
   }

   public void mouseMoved(MouseEvent m) {
       mp = m.getPoint();
   }

   public void paint(Graphics g) {
       if (tim == null) {
           tim = createImage(getWidth(), getHeight());
           tig = tim.getGraphics();
       }
       tig.drawImage(img, 0, 0, getWidth(), getHeight(),
               getX(), getY(), getX() +
               getWidth(), getY() + getHeight(), null);
       tig.setColor(Color.orange);
       tig.fillOval(10, 20, 70, 80);
       tig.setColor(Color.green);
       tig.fillOval(21, 16, 20, 10);
       tig.fillOval(40, 02, 11, 21);
       g.drawImage(tim, 0, 0, null);
   }

   public void cupdate(Graphics g) {
       this.paint(g);
   }

   public static void main(String[] args) {
       new Tw();
   }
}


Это сообщение отредактировал(а) Бекетов Роман aka Yaiu - 6.4.2004, 21:36
PM MAIL   Вверх
LSD
Дата 7.4.2004, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Классная идея: не прятать окно а двигать, это по идее должно быть быстрее. baaa.gif
А метод cupdate(Graphics) для чего?


--------------------
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   Вверх
Domestic Cat
Дата 14.4.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Кстати, код Бекетов Роман aka Yaiu не работает, нужно в конструктор добавить
Код

addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent m)
            {
                mp = m.getPoint();
            }
        });



--------------------

PM   Вверх
Samuil
Дата 26.4.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: нет
Всего: 6



Привет Всем Программерам   smile ! Кто поможет  решить  маленькую проблемму  буду несказанно благодарен. Хочу на Яве написать JFrame  с прозрачным задним фоном.
Типо того что в коде Бекетова Романа aka Yaiu.  В коде у него все работает ОК, да вот только если прикрыть то окно  при котором запускалась прога то получится что задний фон окна не изменится (станется тем же при котором запускалась прога). Всё потому что он только в конструкторе вызывает метод capture(); Так вот мне нужно что бы обновления происходили постоянно , как часто это бывает у креков для прог! Вот у меня еще один вопрос для крутых: Как в Java проигрывать видео ролики???  Если вдруг Вы встречали это в каких нибудь книгах то хотя бы дайте название e-booka или линк с которого ее можно скачать. Заранее благодарю. smile 

moy mail 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
LSD
Дата 26.4.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Проблема в capture(), захват изображения экрана занимает довольно большое время. И это заметно глазу.
А всякие кейгены используют средства ОС, по созданию прозрачных окно, потому и работают без проблем.

А по поводу видео: Java Media Framework.

И на будущее просьба не задавать вопросов не связынных с темой топика. Создай отдельную тему и спроси там. 


--------------------
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   Вверх
Samuil
Дата 28.4.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: нет
Всего: 6



Уважаемые члены форума вот у меня есть 3 маленьких вопросика. 
Вопрос 1: Как можно контролировать и управлять памятью компа?

Вопрос 2: Как сделать чтобы при загрузке JFrame какая нибудь  иконка помещалась рядом с часами Windows’а как у Winamp’a и ICQ ?

Вопрос 3: Почему в JVM нет встроенной библиотеки JMF, кода пишу: import javax.media.*; он показывает что нет такой библиотеки? Как ее установить и где её скачать? 
Заранее благодарю. 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
powerOn
Дата 28.4.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

Репутация: 31
Всего: 159



Цитата

Вопрос 1: Как можно контролировать и управлять памятью компа?


Не понял, поясните... 

Цитата

Как сделать чтобы при загрузке JFrame какая нибудь  иконка помещалась рядом с часами Windows’а как у Winamp’a и ICQ ?


Это к JDIC, Вам сюда: https://jdic.dev.java.net/

Цитата

Почему в JVM нет встроенной библиотеки JMF, кода пишу: import javax.media.*; он показывает что нет такой библиотеки? Как ее установить и где её скачать? 


Java Media Framework не является частью JDK и вместе с ней не поставляется,
скачать её здесь можно http://java.sun.com/products/java-media/jm...1/download.html

И приятель, можно было бы и тему новую создать как никак....  smile  


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 29.4.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Модератор: Samuil я тебя просил не задавать вопросов не связанных с темой топика. Если у тебя есть вопрос который не попадает под тему топика, создай для него новую тему.
При рецидиве получишь read-only на неделю.


Добавлено @ 12:12 
Цитата(MoonCat @  28.4.2006,  23:25 Найти цитируемый пост)
Это к JDIC,

Еще такая штука встроена в SWT. 


--------------------
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   Вверх
Samuil
Дата 29.4.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: нет
Всего: 6



Прошу принять извенения больше не буду smile  


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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