17 Stimmen

Jframe anzeigen, aber keine Titelleiste in der Taskleiste anzeigen

In meiner Anwendung zeige ich einen Jframe in der Ecke des Bildschirms für die Benachrichtigung. Und ich möchte nur Jframe zeigen und nicht eine Titelleiste in der Task-Leiste anzeigen.

Wie kann ich das tun?

32voto

Joe Carnahan Punkte 2345

Wenn Sie möchten, dass das Fenster nur angezeigt wird und weder eine Titelleiste hat noch in der Taskleiste erscheint, verwenden Sie ein JWindow .

Wenn Sie möchten, dass das Fenster angezeigt wird und eine Titelleiste hat, aber nicht in der Taskleiste erscheint, verwenden Sie eine JDialog .

14voto

Masudul Punkte 21513

JDK 1.7 bringt Ihnen die Methode setType. Verwenden Sie die folgende Methode.

JFrame.setType(javax.swing.JFrame.Type.UTILITY)

6voto

CodeMnke Punkte 61

"Alles, was Sie tun müssen, ist, Ihre JFrame-Eigenschaft "type" auf "UTILITY" zu setzen und schon haben Sie es!"

Das funktioniert, zumindest unter Java 1.7, genauso wie das obige "myframe".setType(Type.UTILITY) anstelle von Type.POPUP. Testen Typ Popup (unter Win 7) funktioniert nicht, um es aus der Taskleiste zu entfernen, Type.UTILITY tut.

Undekoriert führt nicht zu den gewünschten Ergebnissen (da dadurch die Titelleiste aus dem Fenster entfernt wird, nicht die Taskleiste)

public class Window extends Container implements Accessible {
    /**
     * Enumeration of available <i>window types</i>.
     *
     * A window type defines the generic visual appearance and behavior of a
     * top-level window. For example, the type may affect the kind of
     * decorations of a decorated {@code Frame} or {@code Dialog} instance.
     * <p>
     * Some platforms may not fully support a certain window type. Depending on
     * the level of support, some properties of the window type may be
     * disobeyed.
     *
     * @see   #getType
     * @see   #setType
     * @since 1.7
     */
    public static enum Type {
        /**
         * Represents a <i>normal</i> window.
         *
         * This is the default type for objects of the {@code Window} class or
         * its descendants. Use this type for regular top-level windows.
         */
        NORMAL,

        /**
         * Represents a <i>utility</i> window.
         *
         * A utility window is usually a small window such as a toolbar or a
         * palette. The native system may render the window with smaller
         * title-bar if the window is either a {@code Frame} or a {@code
         * Dialog} object, and if it has its decorations enabled.
         */
        UTILITY,

        /**
         * Represents a <i>popup</i> window.
         *
         * A popup window is a temporary window such as a drop-down menu or a
         * tooltip. On some platforms, windows of that type may be forcibly
         * made undecorated even if they are instances of the {@code Frame} or
         * {@code Dialog} class, and have decorations enabled.
         */
        POPUP
    }

3voto

lins314159 Punkte 2480

Sie könnten stattdessen ein JWindow verwenden.

3voto

Verwenden Sie einfach ein JWindow...

import javax.swing.JWindow;
import java.awt.Toolkit;
import java.awt.Dimension;

public class Notification extends JWindow {
   private final int WIDTH = 200;
   private final int HEIGHT = 30;

   public Notification() {
      positionWindow();
      setVisible(true);
   }

   // Place the window in the bottom right corner of the screen
   private void positionWindow() {
      Toolkit aToolkit = Toolkit.getDefaultToolkit();
      Dimension screen = aToolkit.getScreenSize();
      int xPosition = screen.width - (WIDTH + 10); // Right edge of the screen
      int yPosition = screen.height - (HEIGHT + 10); // Bottom edge of the screen
      setBounds(xPosition, yPosition, WIDTH, HEIGHT);
   }
}

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