Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: eleven81Ответов: 2

Редактировать

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

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

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 KBD > отклонить заявку.


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

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

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

javauser-interfacetaskbarswingjoptionpane

Ответы

Ответ 1 · рейтинг 23 · OscarRyz

  • Может ли JOptionPane отображаться как задача на панели задач?

No

  • Если нет, есть ли еще что-нибудь, что является однострочным, например JOptionPane.show [something] 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 без чего-либо другого (хотя я не вижу его на панели задач, как вы сказали)

Ответ 2 · рейтинг 1 · Jarekczek

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы