powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переопределить сворачивание
9 сообщений из 9, страница 1 из 1
Как переопределить сворачивание
    #34766923
IvanPr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть главная форма приложения и куча дополнительных. Хочу чтобы при сворачивании дополнительных они не сворачивались на панель задач, а допустим создавался button в главном окне, по которому открывалось это свернутое окно. Вариант с JInternalFrame мне не подходит, можно ли это сделать с обычными JFrame
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34766976
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanPrВариант с JInternalFrame мне не подходит
Почему?
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34767160
IvanPr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По крайней мере хотелось бы чтобы окно могло передвигаться за пределами главного, чего с JInternalFrame не сделаешь.
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34767168
IvanPr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ведь окна как-то умеют сворачиваться в трей. Мне нужен аналог трея для моих окон в главном окне приложения
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34767457
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, можно извратиться. Создаешь немодальную диаложку (в качестве парента указываешь свой главный фрейм). Дальше для нее как то кнопочку "свернуть" надо сделать. По моему как то это делается стандартными средствами - но не уверен. Если стандартными средствами не получится, то убираешь у диаложки рамку (setUndecorated(true)), делаешь сам заголовок, за который перетаскивать можно, и нужные кнопочки. При нажатии на кнопку "свернуть" хайдишь диалог и добавляешь кнопочку, по которой его можно снова показать.
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34767464
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34767519
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvНу так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
Если обычными фреймами это делать - то они будут "проваливаться" под главную форму. И в виндовском статус баре под них кнопочки показываться будут. Что не есть гуд. Тобишь тут немодальными диаложками делать надо. А вот есть ли у немодальной диаложки кнопка "свернуть" - я не помню. По моему есть. У модальной ее точно нет.
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #34769442
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дуремар LeonidvНу так и что мешает сделать? Перехватываете сообщение о минимизации окна и создаете для него картинку.
Если обычными фреймами это делать - то они будут "проваливаться" под главную форму. И в виндовском статус баре под них кнопочки показываться будут. Что не есть гуд. Тобишь тут немодальными диаложками делать надо. А вот есть ли у немодальной диаложки кнопка "свернуть" - я не помню. По моему есть. У модальной ее точно нет.

Могу Вас разочаровать. В linux для немодальных диалогов будут выводится кнопки в taskbar.
...
Рейтинг: 0 / 0
Как переопределить сворачивание
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переопределить сворачивание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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