Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переопределить сворачивание / 9 сообщений из 9, страница 1 из 1
31.08.2007, 10:50:26
    #34766923
IvanPr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
Есть главная форма приложения и куча дополнительных. Хочу чтобы при сворачивании дополнительных они не сворачивались на панель задач, а допустим создавался button в главном окне, по которому открывалось это свернутое окно. Вариант с JInternalFrame мне не подходит, можно ли это сделать с обычными JFrame
...
Рейтинг: 0 / 0
31.08.2007, 10:58:53
    #34766976
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
IvanPrВариант с JInternalFrame мне не подходит
Почему?
...
Рейтинг: 0 / 0
31.08.2007, 11:35:47
    #34767160
IvanPr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
По крайней мере хотелось бы чтобы окно могло передвигаться за пределами главного, чего с JInternalFrame не сделаешь.
...
Рейтинг: 0 / 0
31.08.2007, 11:37:25
    #34767168
IvanPr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
Ну ведь окна как-то умеют сворачиваться в трей. Мне нужен аналог трея для моих окон в главном окне приложения
...
Рейтинг: 0 / 0
31.08.2007, 12:35:09
    #34767457
Дуремар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
Ну, можно извратиться. Создаешь немодальную диаложку (в качестве парента указываешь свой главный фрейм). Дальше для нее как то кнопочку "свернуть" надо сделать. По моему как то это делается стандартными средствами - но не уверен. Если стандартными средствами не получится, то убираешь у диаложки рамку (setUndecorated(true)), делаешь сам заголовок, за который перетаскивать можно, и нужные кнопочки. При нажатии на кнопку "свернуть" хайдишь диалог и добавляешь кнопочку, по которой его можно снова показать.
...
Рейтинг: 0 / 0
31.08.2007, 12:37:08
    #34767464
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
Ну так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
...
Рейтинг: 0 / 0
31.08.2007, 12:47:37
    #34767519
Дуремар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
LeonidvНу так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
Если обычными фреймами это делать - то они будут "проваливаться" под главную форму. И в виндовском статус баре под них кнопочки показываться будут. Что не есть гуд. Тобишь тут немодальными диаложками делать надо. А вот есть ли у немодальной диаложки кнопка "свернуть" - я не помню. По моему есть. У модальной ее точно нет.
...
Рейтинг: 0 / 0
01.09.2007, 00:29:02
    #34769442
rstrelba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
Дуремар LeonidvНу так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
Если обычными фреймами это делать - то они будут "проваливаться" под главную форму. И в виндовском статус баре под них кнопочки показываться будут. Что не есть гуд. Тобишь тут немодальными диаложками делать надо. А вот есть ли у немодальной диаложки кнопка "свернуть" - я не помню. По моему есть. У модальной ее точно нет.

Могу Вас разочаровать. В linux для немодальных диалогов будут выводится кнопки в taskbar.
...
Рейтинг: 0 / 0
01.09.2007, 02:52:01
    #34769491
untitled
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить сворачивание
а если немного извратиться))


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
 import  javax.swing.*;
 import  java.awt.*;
 import  java.awt.event.ActionEvent;
 import  java.awt.event.ActionListener;
 import  java.awt.event.WindowEvent;
 import  java.beans.PropertyChangeEvent;
 import  java.beans.PropertyChangeListener;
 import  java.io.*;

 public   class  testFrame {

     public   static   void  main(String args[]) {

        JFrame mainFrame =  new  JFrame("Очень главный фрейм");

        mainFrame.add( new  FrameHolder("Скрывающийся фрейм"));
        mainFrame.setSize( 300 ,  300 );
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
    }

     private   static   class  FrameHolder  extends  JPanel {

         private  JButton button =  new  JButton("Show frame");

         private  MyFrame frame;
         private   byte [] serializedFrame;

         private  PropertyChangeListener listener =  new  PropertyChangeListener() {
             public   void  propertyChange(PropertyChangeEvent evt) {
                 try  {
                    System.out.println("ops");
                    serializedFrame = serialize(frame);
                    frame.removePropertyChangeListener(listener);
                    frame.dispose();
                    button.setVisible(true);
                }  catch  (Exception e) {
                    e.printStackTrace();
                }
            }
        };

         public  FrameHolder( final  String name) {
             this .add(button, BorderLayout.CENTER);

            button.addActionListener( new  ActionListener() {
                 public   void  actionPerformed(ActionEvent e) {
                     if  (serializedFrame ==  null ) {
                        frame =  new  MyFrame(name);
                        frame.addPropertyChangeListener(MyFrame.EVENT_ICONIFIED, listener);

                    }  else  {
                         try  {
                            frame = unserialize(serializedFrame);
                            frame.addPropertyChangeListener(MyFrame.EVENT_ICONIFIED, listener);
                            frame.setState(JFrame.NORMAL);
                            frame.toFront();
                        }  catch  (Exception e1) {
                            e1.printStackTrace();
                        }
                    }
                    frame.setVisible(true);
                    button.setVisible(false);
                }
            });
        }

         private   static   byte [] serialize(MyFrame frame)  throws  IOException, ClassNotFoundException {
            ByteArrayOutputStream b =  new  ByteArrayOutputStream();
            ObjectOutputStream out =  new  ObjectOutputStream(b);
            out.writeObject(frame);
             return  b.toByteArray();
        }

         private   static  MyFrame unserialize( byte [] serializedFrame)  throws  IOException, ClassNotFoundException {
            ObjectInputStream in =  new  ObjectInputStream( new  ByteArrayInputStream(serializedFrame));
             return  (MyFrame) in.readObject();
        }

    }

     private   static   class  MyFrame  extends  JFrame  implements  Serializable {

         public   static   final  String EVENT_ICONIFIED = "тынц";

         public  MyFrame(String name) {
             super (name);
            setSize( 200 ,  200 );
             this .setLocation( 300 ,  300 );
             this .add( new  JScrollPane( new  JTextArea("Hellow, world")));
        }

         protected   void  processWindowEvent(WindowEvent e) {
            System.out.println(e);
             if  (e.getID() == WindowEvent.WINDOW_ICONIFIED) {
                System.out.println("!!");
                 this .firePropertyChange(MyFrame.EVENT_ICONIFIED,  null , e);
            }  else  {
                 super .processWindowEvent(e);
            }
        }
    }


}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переопределить сворачивание / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]