2010-08-10 5 views
1

Je suis tray un jdialog sur Linux, mais il apparaît toujours dans ma barre des tâches. c'est le code? Qu'est-ce qui ne va pas?java jialialog bouton de la barre des tâches

import javax.swing.JDialog; 

public class Main { 
    public static void main(String [] args) { 
     new mydialog(); 
    } 

    private static class mydialog extends JDialog { 
     public mydialog() { 
      super(); 
      setSize(200,200); 
      setLocationByPlatform(true); 
      setAlwaysOnTop(false); 
      setUndecorated(true); 
      setVisible(true); 
     } 
    } 
} 
+0

Pouvez-vous préciser votre question, peut-être avec une capture d'écran? qu'est-ce que tu veux dire traying? –

Répondre

0

la seule solution que je trouve est de passer d'interfaces Swing GTK interfaces, pour ce faire je java-gnome. le seul problème est que vous devez changer tous les composants des classes swing pour les classes gtk correspondantes.

0

essayez de remplacer setLocationByPlatform(true); avec setLocation(10, 10);

+0

de cette façon, vous êtes seulement dire de positionner la fenêtre aux coordonnées 10-10 au lieu de 0-0. J'ai essayé et ne fonctionne toujours pas. sur Windows ça marche et pas sur Linux. Je crois que cela est dû à une implémentation différente de Java jre. Je pense que le problème est insoluble, à moins d'une intervention de bas niveau dans les classes jre. – Syco

0

Vous devez utiliser JWindow si vous ne voulez pas qu'il apparaisse dans la barre des tâches.
Voir aussi: how-do-i-prevent-jdialog-from-showing-in-gnome-panellinux

+0

JWindow reste toujours sur le dessus, et il y a beaucoup de problèmes avec les boîtes de dialogue de texte et les boutons à l'intérieur. C'est bon pour l'écran de démarrage, mais je ne crois pas que ce soit utile pour les applications standard. – Syco

1

Comme il semble encore être un problème dans des environnements Linux, je voudrais partager ma solution à ce sujet:

Je devais simplement créer le JDialog avec un parent Cadre/fenêtre comme « nouvelle JDialog (nouvelle JFrame()); " et après avoir défini le JDialog pour être visible, j'appelle "jframe.revalidate();". C'est tout. On dirait que Java a un problème de communication correctement avec le DisplayManager tout le initialisant JDialog ..

Works pour moi avec Java 1.8.0.45, Linux Mint 17.1, la cannelle 2.4.8

0

lutté avec celui-ci pendant un certain temps à présent. Ce qui a finalement fonctionné pour moi:

JDialog frame = new JDialog(); 
frame.setType(javax.swing.JFrame.Type.POPUP); 

Vous pouvez également essayer de définir le type à UTILITY.

Lubuntu 15.04 (LXDE) en cours d'exécution Java 1.8.0_25

Questions connexes