18 Stimmen

Wie kann ich erreichen, dass JOptionPane-Dialoge als Aufgabe in der Taskleiste angezeigt werden?

Edit :

Die Frage folgt der horizontalen Regel; meine eigene Antwort geht ihr voraus.

Mit der Hilfe von Oscar Reyes habe ich diese Lösung entwickelt:

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();
    }
}

Beachten Sie, dass ich meine Ausgabe auch in einem JOptionPane.showInputDialog anzeige. Auf diese Weise wird die Ausgabe in einem Textfeld hervorgehoben und ich kann einfach auf CTRL + C um die Ausgabe in die Zwischenablage des Systems zu kopieren, und drücken Sie dann ESC die Klage abzuweisen.


Ich habe eine triviale GUI für meine triviale Anwendung erstellt. Meine Anwendung fragt nach einer einzigen Eingabe mit einer JOptionPane.showInputDialog aus, führt eine Berechnung durch und zeigt dann eine einzelne Ausgabe mit einem JOptionPane.showMessageDialog . Manchmal wechsle ich zum Kopieren in ein maximiertes Browser-Fenster oder etwas anderes und möchte dann zum Einfügen in mein JOptionPane-Dialogfeld zurückwechseln.

Ich möchte, dass mein JOptionPane-Dialog als Aufgabe in der Taskleiste angezeigt wird, so dass ich zu ihm wie zu fast jedem anderen laufenden Programm wechseln kann. Ich bevorzuge die Einfachheit von JOptionPane, anstatt einen JFrame, ein FlowLayout, ein Icon, ein JTextField, einen JButton, einen ActionListener und so weiter und so fort erstellen zu müssen.

  • Kann JOptionPane als Aufgabe in der Taskleiste angezeigt werden?
  • Wenn ja, wie bringe ich sie zum Erscheinen?
  • Wenn nicht, gibt es noch etwas, das ein Einzeiler ist wie JOptionPane.show[whatever]dialog() ?

24voto

OscarRyz Punkte 189898
  • Kann JOptionPane als Aufgabe in der Taskleiste angezeigt werden?

Nein

  • Wenn nicht, gibt es etwas anderes, das ein Einzeiler wie JOptionPane.show[whatever]dialog() ist?

Nicht gerade ein Einzeiler (aber ein paar zusätzliche 6 Zeilen :P )

Ich wette, Sie können all dies in einer Utlity-Methode ziemlich einfach und rufen Sie es, wenn Sie es mit einem einzigen Aufruf benötigen.

Der folgende Code würde eine Taskleiste für Ihre Anwendung hinzufügen.

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();
    }
}

Übrigens kann ich unter Windows Vista mit Alt+Tab zum Optionsbereich wechseln, ohne etwas anderes zu tun (obwohl ich ihn nicht in der Taskleiste sehen kann, wie Sie sagten).

1voto

Jarekczek Punkte 6930

Diese Frage ist plattformabhängig. Auf meinem System, Debian Linux mit OpenBox, werden JOptionPanes immer in der Taskleiste angezeigt. Ich kann nicht verhindern, dass ein JDialog in der Taskleiste angezeigt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X