2012-04-19 1 views
3

У меня есть короткий код, я хотел бы удалить диалог, но не хочу, чтобы пользователь мог его закрыть, он просто не работает, не помогает Я пожалуйста.Dispose JDialog по коду, не позволяйте пользователю закрывать его

import javax.swing.*; 
    public class Processing extends JOptionPane{ 

    JDialog jd; 
    public Processing(){ 
     super(null, JOptionPane.DEFAULT_OPTION, 
        JOptionPane.INFORMATION_MESSAGE, null, new Object[]{}); 
     Icon processPic = new ImageIcon("C:\\Users\\Judit\\Desktop\\Mesekocka3D" 
       + "\\externals\\pics\\szamitas.gif"); 

     setMessage(processPic); 
     jd = createDialog("Számítás"); 

     jd.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 
     jd.setVisible(true); 
     jd.dispose(); 
    } 
} 

это как мой код выглядит сейчас, я использую JDialog вместо JOptionPane, я должен написать несколько символов, чтобы сделать веб-сайт принимает мой выбор?

import javax.swing.*; 



public class Mifasz 
{ 
private static class Processing extends JDialog{ 

public Processing(){ 
    Icon processPic = new ImageIcon("C:\\Users\\Judit\\Desktop\\Mesekocka3D" 
      + "\\externals\\pics\\szamitas.gif"); 
    JLabel label = new JLabel(processPic); 
    add(label); 
    setTitle("Számítás"); 
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);   
    setSize(400, 70); 
    setLocation(330, 300); 
    setModal(true); 
    setVisible(true); 
    dispose(); 
}  
} 

    public static void main(String[] args) 
    { 
    Processing pc = new Processing(); 
    } 

} 
+0

Почему вы смешиваете 'JDialog' с' JOptionPane' (это то же семейство 'JComponents'), что вы действительно хотите сделать (игнорируя' не хотите, чтобы пользователь мог закрыть it'), один из них бесполезен, используйте JDialog или JOptionPane :-) – mKorbel

+0

Я бы хотел показать gif для пользователя в течение короткого времени, это как загрузочный экран, я не хочу, чтобы он ничего не делал с помощью app до, поэтому я использую joptionpane, но я также хотел бы отключить кнопку X, поэтому я использую jdialog, потому что я не нашел опции для отключения кнопки X кнопки optionpane. –

ответ

1

Вам нужно позвонить

jd.setVisible(false); 

и затем

jd.dispose(); 
+1

все еще ничего хорошего: S –

2

Я хотел бы показать GIF для пользователя в течение короткого промежутка времени, это как loadingscreen, Я не хочу, чтобы он делал что-либо с этим приложением, поэтому я использую joptionpane, но я также хотел бы отключить кнопку X, поэтому я использую jdialog, потому что я не нашел возможности отключить Optio Кнопка npane's X.

1) можно использовать без отделки JDialog#setUndecorated(true);

2) поставил gif, как Icon к JLabel

3) использовать Swing Timer для синхронизации, ooutput от качания Таймер может быть Swing Action и внутри actionPerformed поместить JDialog#setVisible(fasle);

EDIT

я хотел бы, чтобы заблокировать его, и это нужно использовать столько раз, пользователь нажимает на элемент JComboBox

1) создать JDialog только один раз раз, вы будете повторно использовать, что только

2) запустить свинг таймер # повтор (ложь) с ожидая задержки в actionPerformed поставил JDialog#setVisible(fasle);

3) по событию от выбранного Item (JComboBox) изменения Icon в JLabelmyLabel#setIcon(myAnotherGIF)

4) внутри invokeLater обертка JDialog#setVisible(true);

5) любые шаги, еще не требуются

только в особых случаях

6) вы должны вызвать

myIcon.getImage().flush(); 
myLabel.setIcon(myIcon); 

в случай, который вы выпустили с Icon's, перекрашивая в JLabel

+0

@Ferenc Dajka см. Мой ответ здесь, мой вопрос, сколько раз вы хотите отобразить этот JDialod с изображением, в случае, когда только один раз во время создания приложения, вам не нужно каким-то образом отвечать. .. – mKorbel

+0

JDialog не блокирует экран, как joptionpane, я бы хотел его заблокировать, и его нужно использовать столько раз, когда пользователь нажимает на элемент JCombobox –

+0

@Ferenc Dajka 'JDialog # setModal (true);' или есть ModalityTypes, но, может быть, и неважно ... – mKorbel

0

Что вы хотите сделать, это заставка, см. this.