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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как убить крестик с диалога? 
:(
    Опции темы
skhilkov
Дата 6.10.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как сделать так, чтобы ничего не делалось по его нажатию, я сделал, а вот где его совсем убрать?


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


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



Убрать - никак. Можно либо убрать заголовок совсем (setUndecorated(true)), либо реализовать свой RootPaneUI и рисовать заголовок самостоятельно. Или нужно все оставить как есть, но избавиться только от кнопки?


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


software saboteur
****


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

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



Цитата(w1nd @  6.10.2006,  16:19 Найти цитируемый пост)
Убрать - никак.


Убрать можно. Но! Придется отказаться от нативного заголовка и выполнить пару извращений.
Код

import java.awt.Component;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JRootPane;

public class NewJDialog extends javax.swing.JDialog {
    
    /** Creates new form NewJDialog */
    public NewJDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
      
        initComponents();
        
       getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
        
        // Извращения
        for (Component c : getRootPane().getComponents()) {
            for (Component cc : ((JComponent) c).getComponents()) {
                if (cc.getClass().getName().equalsIgnoreCase("javax.swing.plaf.metal.MetalTitlePane")) {
                    for (Component ccc : ((JComponent) cc).getComponents()) {
                        if (ccc instanceof JButton) {
                            ((JButton) ccc).setVisible(false);
                        }
                    }
                }
            }
        }
    }
    
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        jButton1.setText("Exit");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.PAGE_END);

        pack();
    }                       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
    }                                        
    
    public static void main(String args[]) {
        JDialog.setDefaultLookAndFeelDecorated(true);
        Toolkit.getDefaultToolkit().setDynamicLayout(true);
        System.setProperty("sun.awt.noerasebackground","true"); 
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                NewJDialog d = new NewJDialog(new javax.swing.JFrame(), true);
                d.setVisible(true);
                d.setLocationRelativeTo(null);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    // End of variables declaration                   
    
}




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

PM MAIL   Вверх
skhilkov
Дата 7.10.2006, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(w1nd @ 6.10.2006,  15:19)
Убрать - никак. Можно либо убрать заголовок совсем (setUndecorated(true)), либо реализовать свой RootPaneUI и рисовать заголовок самостоятельно. Или нужно все оставить как есть, но избавиться только от кнопки?

Ага, точно, именно это и надо - оставить все как есть  и только эту кнопку убрать. Сейчас попытаюсь сделать как PowerOn предложил.


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
skhilkov
Дата 7.10.2006, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



powerOn,  а вот эта строчка работает только для конкретного LookAndFeel?

 if (cc.getClass().getName().equalsIgnoreCase("javax.swing.plaf.metal.MetalTitlePane")) 

Просто такая привязка не очень то желательна, даже я бы сказал не прокатит.... 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
powerOn
Дата 7.10.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(skhilkov @  7.10.2006,  07:44 Найти цитируемый пост)
а вот эта строчка работает только для конкретного LookAndFeel

да.

Цитата(skhilkov @  7.10.2006,  07:44 Найти цитируемый пост)
росто такая привязка не очень то желательна, даже я бы сказал не прокатит....  

Мне тоже не нравиться.  smile  Я поэтому и говорю, что извращаться придеться... Просто стандартного способа, типа JDialog.setCloseButtonVisible(false) нет. Отсюда и выкрутасы.  smile 

Вообще, в связи со сложивщийся ситуацией, ИМХО, не нужно ничего удалять, а просто сделать setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); и оставить кнопку в покое. 


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

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

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

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


 




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


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

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