Как сделать так, чтобы диалоги JOptionPane отображались в виде задачи на панели задач? - PullRequest
16 голосов
/ 12 февраля 2009

Edit:

Вопрос следует горизонтальному правилу; мой собственный ответ предшествует этому.


Основываясь на справке от Оскара Рейеса , я создал это решение:

import javax.swing.JOptionPane;
import javax.swing.JFrame;

public class MyApp extends JFrame {
    public static void main(String [] args) {
        new MyApp();
    }

    public MyApp() {
        super("MyApp");
        setUndecorated(true);
        setVisible(true);
        setLocationRelativeTo(null);
        String i = JOptionPane.showInputDialog(this, "Enter your name:", getTitle(), JOptionPane.QUESTION_MESSAGE);
        if(null != i) {
            JOptionPane.showInputDialog(this, "Your name is:", getTitle(), JOptionPane.INFORMATION_MESSAGE, null, null, i.concat(i));
        }
        dispose();
    }
}

Обратите внимание, что мой вывод также отображается в JOptionPane.showInputDialog. Таким образом, вывод выделяется в текстовом поле, поэтому я могу просто нажать CTRL + C , чтобы скопировать вывод в системный буфер обмена, а затем нажать ESC , чтобы закрыть приложение.


Я создал простой графический интерфейс для моего простого приложения. Мое приложение запрашивает один вход с JOptionPane.showInputDialog, выполняет вычисления, а затем отображает один выход с JOptionPane.showMessageDialog. Иногда я переключаюсь в развернутое окно браузера или что-то еще для копирования, а затем хочу вернуться в диалоговое окно JOptionPane для вставки в него.

Я хочу, чтобы мое диалоговое окно JOptionPane отображалось в качестве задачи на панели задач, чтобы я мог переключиться на него, как и на любую другую работающую программу. Я предпочитаю простоту JOptionPane, а не создавать JFrame, FlowLayout, Icon, JTextField, JButton, ActionListener и т. Д. И т. Д. И т. Д.

  • Может ли JOptionPane отображаться в качестве задачи на панели задач?
  • Если так, как я могу заставить его появляться?
  • Если нет, есть ли что-нибудь еще, что является однострочным, как JOptionPane.show[whatever]dialog()?

Ответы [ 2 ]

21 голосов
/ 12 февраля 2009
  • Может ли JOptionPane отображаться в качестве задачи на панели задач?
нет

Нет

  • Если нет, есть ли что-нибудь еще, что является однострочным, как JOptionPane.show [что угодно] dialog ()?

Не один лайнер (но несколько дополнительных 6 строк: P)

Бьюсь об заклад, вы можете довольно легко поместить все это в метод utlity и вызывать его всякий раз, когда вам это нужно, одним вызовом.

Следующий код добавит панель задач для вашего приложения.

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class OptionTest { 
    public static void main ( String [] args ) { 

        JFrame frame = new JFrame("My dialog asks....");

        frame.setUndecorated( true );
        frame.setVisible( true );
        frame.setLocationRelativeTo( null );


        String message = JOptionPane.showInputDialog(frame,
            "Would this be enough?.", 
            "My dialog asks....", 
            JOptionPane.INFORMATION_MESSAGE);

        System.out.println( "Got " + message );

        frame.dispose();
    }
}

Кстати, в Windows Vista я могу переключаться на OptionPane, используя Alt + Tab, без чего-либо еще (хотя я не вижу его на панели задач, как вы сказали)

1 голос
/ 16 октября 2011

Этот вопрос зависит от платформы. В моей системе, Debian Linux с OpenBox, JOptionPanes всегда отображаются на панели задач. Я не могу предотвратить появление JDialog на панели задач.

...