Schließen von JPopupMenu

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi
Ich habe ein JPopupMenu, welches ich gerne schliessen möchte. Ich habe es mit setVisible(false) versucht, aber es klappte irgendwie nicht. Kann mir da wohl jemand weiterhelfe? Danke im Voraus!
 

André Uhres

Top Contributor
Anonymous hat gesagt.:
...Ich habe ein JPopupMenu, welches ich gerne schliessen möchte...
Wie machst du das JPopupMenu sichtbar?
Normalerweise geht das ja mit einem Rechtsklick auf eine Komponente, z.B. auf eine JTextArea.
Ein MouseListener macht das dann mit popup.show(..) sichtbar.
Es verschwindet automatisch wenn du einen Menüpunkt auswählst,
oder wenn du neben das popup klickst, oder wenn du die Escape-Taste drückst.
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/PopupMenuDemo.java
Gruß
André
 

TheJavaKid

Top Contributor
probiers mal so

Code:
addMouseListener( new MouseAdapter() {
      public void mouseReleased( MouseEvent me ) {
        if(me.isPopupTrigger() )
          popman.show(me.getComponent(), me.getX(), me.getY());
      }
    });

popman ist das JPopMenu...
 

thE_29

Top Contributor
Liest sich eigentlich irgendwer die Frage auch noch durch??


Er möchte es einfach, schließen und net wenn es automatisch zugehen sollte und auch net wie man es anzeigt....

Probier mal

JPopupMenu.menuSelectionChanged(false);

Bei mir wars dann weg! (es verschwand aber auch mit setVisible(false))
 

André Uhres

Top Contributor
thE_29 hat gesagt.:
Liest sich eigentlich irgendwer die Frage auch noch durch??..
Ja doch. Aber da Otto Normalverbraucher sich um's Popupschliessen nicht kümmern müssen sollte,
ist die Ursache des Problems höchstwahrscheinlich das eigentliche Problem.
In dem Fall wäre ein direkter Lösungversuch eigentlich nur Flickarbeit.
 

Caffè Latte

Bekanntes Mitglied
Hi,

aus mir bekannten Anwendungen kenne ich das nur so wie von André beschrieben. Und soll in bestimmten Fällen kein Popup-Menü erscheinen verhindere ich das explizit für den Fall.

Alles andere macht doch irgendwie keinen Sinn, oder? Und wie man anständige GUIs baut steht hier: Java Look and Feel Design Guidelines

Caffè Latte
 

aze

Bekanntes Mitglied
Ich habe ein ähnliches Problem:

Ich habe ein JTextField,dass per Mausklick ein JPopMenu erzeugt und öffnet (Show Befehl).Der Inhalt des Popups ist abhängig von einen anderen JtextField.Das Schließen des Popups mit setVisible(false) klappt auch,aber wenn ich jetzt ein zweites mal das Popup öffne erscheint immer noch das alte.Gibt es nicht einen Weg ähnlich wie mit dispose() ein Popup ganz "zu zerstören" ?
 

Ebenius

Top Contributor
PopupMenu's öffnet man nicht (mehr) per MouseListener. Dann funktioniert nämlich die hübsche Taste auf der Tastatur nicht. Daher besser:
Java:
textField.setComponentPopupMenu(aPopupMenu)
Wenn das Popupmenü unterschiedlichen dynamischen Inhalt haben soll, kann man das mit einem Listener auf dem PopupMenu lösen.

Kleines Beispiel:
Java:
final JPopupMenu menu = new JPopupMenu();
menu.addPopupMenuListener(new PopupMenuListener() {

  int test = 0;

  public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
    menu.removeAll();
    if ((test++ % 2) == 0) {
      menu.add(new JMenuItem("A"));
    } else {
      menu.add(new JMenuItem("B"));
    }
  }

  public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}

  public void popupMenuCanceled(PopupMenuEvent e) {}
});
final JTextField textField = new JTextField(40);
textField.setComponentPopupMenu(menu);

final JFrame f = new JFrame("Test Frame: GridBagTest"); //$NON-NLS-1$
f.setContentPane(textField);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
Ebenius
 

aze

Bekanntes Mitglied
Ich hab im meinen JPopUpmenu keine Menuitems drin sondern andere Komponenten,nämlich eine JTable und ein JPanel.LEider funktioniert es nicht

eigentlich bräuchte ich auch nur ein Popup aber bei der Popup Klasse von Swing wusste ich nicht wie man Hintergrundfarbe oder ähnliches einstellt oder überhaupt einstellen kann.
 

Ebenius

Top Contributor
Eine JTable im PopupMenu... Das hab ich auch noch nicht gesehen.

Kleines Beispiel, wie man die PopupFactory benutzt:
Java:
/* (@)PopupFun.java */

/* Copyright 2009 Sebastian Haufe

 * Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

 * Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius.swing;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

/**
 * Test class for {@link PopupFactory} usage.
 * 
 * @author Sebastian Haufe
 */
public class PopupFun {

  /**
   * Test main method.
   * 
   * @param args ignored
   */
  public static void main(String[] args) {

    final JButton button = new JButton(new AbstractAction("Popup") {

      public void actionPerformed(ActionEvent e) {
        final JScrollPane scrollPane = new JScrollPane(new JTable(7, 2));
        scrollPane.getViewport().setBackground(Color.GREEN);
        final Point p = MouseInfo.getPointerInfo().getLocation();
        final PopupFactory pfac = PopupFactory.getSharedInstance();
        final Popup popup =
              pfac.getPopup((Component) e.getSource(), scrollPane, p.x, p.y);
        popup.show();
        final Timer timer = new Timer(5000, new ActionListener() {

          public void actionPerformed(ActionEvent e) {
            popup.hide();
          }
        });
        timer.setRepeats(false);
        timer.start();
      }
    });

    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(button);

    final JFrame f = new JFrame("Test Frame: PopupFun"); //$NON-NLS-1$
    f.setContentPane(contentPane);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }
}
Ebenius
 

aze

Bekanntes Mitglied
Hmm okay.

Es hat zwar nichts mit den ursprünglichen Thema zu tun ,aber wie bekomm ich es jetzt hin ,dass das Popup die Eigenschaften von JPopMenu bekommt.Das Popup soll verscheinden wenn man auf das ursprüngliche Fenster klickt oder auf eine Zelle der Tabelle.
 

Ebenius

Top Contributor
Wenn es sich nicht um ein PopupMenu handelt, dann kannst Du durchaus einen MouseListener nehmen. Wofür ist das Popup denn da?

Ebenius
 

aze

Bekanntes Mitglied
Man soll in dem Popup ein Datum auswählen ,dass in der besagten JTable ist.
Nach der Auswahl soll sich das Popup schließen.Oder wenn man eben auf das Ursprungsfenster klickt.

Ich hab die Kompionente die vorher ein JPopUpMenu war jetzt zu einen JPanel geändert das per Popup geöffnet wird.Auf Msudruck auf die Tablle soll das Panel unsichtbar gesetzt werden(setVisible(false)).Es wird aber zu einer weisen Fläche
 

Ebenius

Top Contributor
Steht doch in meinem Quelltext oben: Popups erzeugt man mit der PopupFactory, geschlossen werden sie mit [c]Popup.hide()[/c].

Ebenius
 

aze

Bekanntes Mitglied
Mit
Java:
Popup.hide
passiert leider dasselbe

Edit:Geht doch.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JPopupMenu per Klick schließen und gleichzeitig ActionEvent auf JButton? AWT, Swing, JavaFX & SWT 15
S JPopupMenu schließen in SystemTray AWT, Swing, JavaFX & SWT 2
S Swing JPopupMenu nicht schließen AWT, Swing, JavaFX & SWT 2
T JPopupMenu "schließen" AWT, Swing, JavaFX & SWT 7
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
S GUI Schließen Button auf der linken Seite AWT, Swing, JavaFX & SWT 2
emma_louisa JavaFX MenuBar Zweitfenster; bei Button "Abbrechen" nur das Zweitfenster schließen AWT, Swing, JavaFX & SWT 2
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T Fenster schließen AWT, Swing, JavaFX & SWT 4
R JFrame schließen AWT, Swing, JavaFX & SWT 9
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
D JavaFX Beim Schließen (Rotes X) Code ausführen AWT, Swing, JavaFX & SWT 1
D Geöffnetes Dialogfenster schließen AWT, Swing, JavaFX & SWT 11
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
O Neuen JFrame öffnen und alten schließen AWT, Swing, JavaFX & SWT 7
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
C Programm mit Passwort schließen AWT, Swing, JavaFX & SWT 5
E JavaFX JavaFX Fenster nicht schließen AWT, Swing, JavaFX & SWT 4
thet1983 offne Fenster gemeinsam schließen AWT, Swing, JavaFX & SWT 8
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2
W SWT Dialog richtig schließen? AWT, Swing, JavaFX & SWT 0
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
VfL_Freak AWT Browser öffnen und schließen via java.awt.Desktop AWT, Swing, JavaFX & SWT 4
L Event Handling windowAdapter - NullPointerException beim Schließen AWT, Swing, JavaFX & SWT 5
R SWT Wizard schließen AWT, Swing, JavaFX & SWT 2
M Swing Einzelne Fenster schließen AWT, Swing, JavaFX & SWT 2
L SWT Eingabefelder beim Schließen des Forms auslesen AWT, Swing, JavaFX & SWT 3
M Swing ButtonListener Fenster schließen AWT, Swing, JavaFX & SWT 15
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
J Swing JInternalFrame schließen ändern? AWT, Swing, JavaFX & SWT 7
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
S Fremdes Fenster schließen AWT, Swing, JavaFX & SWT 2
E Fenster schließen und ein anderes öffnen AWT, Swing, JavaFX & SWT 9
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
Madlip SWT DateTime Widget Schließen AWT, Swing, JavaFX & SWT 4
K beim Schließen des JFrames, Methode aufrufen AWT, Swing, JavaFX & SWT 3
X Öffnen Schließen Fenster AWT, Swing, JavaFX & SWT 4
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
J Programm schließen AWT, Swing, JavaFX & SWT 4
H Anwendung schließen ohne System.exit AWT, Swing, JavaFX & SWT 5
0 Fenster schließen AWT, Swing, JavaFX & SWT 2
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
D Fenster schließen AWT, Swing, JavaFX & SWT 7
S AWT Fenster schließen und Programm beenden AWT, Swing, JavaFX & SWT 10
F Swing JFrame Methode beim Schließen aufrufen AWT, Swing, JavaFX & SWT 5
2 Zusätzliches Fenster mit OK-Button schließen AWT, Swing, JavaFX & SWT 7
B Fenster schließen AWT, Swing, JavaFX & SWT 4
N Swing Von 2 dimensionalem Array auf JTextfield schließen und färben AWT, Swing, JavaFX & SWT 6
E JWindow bewegen, minimieren, vergrößern und schließen AWT, Swing, JavaFX & SWT 5
W Swing Event bei Schließen des Fensters AWT, Swing, JavaFX & SWT 6
I Fenster schließen - Button AWT, Swing, JavaFX & SWT 13
G Swing Fenster schließen AWT, Swing, JavaFX & SWT 6
R WindowClosing Event - Schließen rückgängig machen? AWT, Swing, JavaFX & SWT 2
aze FlowLayout:Lücken "schließen" AWT, Swing, JavaFX & SWT 2
D Swing Dialog schließen verhindern bei Fehleingabe AWT, Swing, JavaFX & SWT 2
T Schließen eines JDialogs setzen den JFrame in den Hintergrund AWT, Swing, JavaFX & SWT 2
N JInternalFrame minimieren und schließen AWT, Swing, JavaFX & SWT 2
M JWindow schließen wenn Frame sich ändert AWT, Swing, JavaFX & SWT 2
E Fenster schließen über X AWT, Swing, JavaFX & SWT 8
DStrohma JFrame mit WindowListener schließen AWT, Swing, JavaFX & SWT 12
M Main Frame schließen und neue Klasse aufrufen? AWT, Swing, JavaFX & SWT 2
T AWT Vollbild öffnen und schließen AWT, Swing, JavaFX & SWT 3
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
ModellbahnerTT Neuer JFrame schließen AWT, Swing, JavaFX & SWT 4
U Tab schließen durch Button in Panel AWT, Swing, JavaFX & SWT 7
D aktuells fenster + letztes fenster schließen AWT, Swing, JavaFX & SWT 5
S Frames schließen AWT, Swing, JavaFX & SWT 6
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
J Swing Anwendung schließen im Listener AWT, Swing, JavaFX & SWT 3
C Swing Schließen, Maximieren, Minimieren entfernen AWT, Swing, JavaFX & SWT 6
D Schließen der GUI auf knopfdruck AWT, Swing, JavaFX & SWT 7
T Views bedingt öffnen oder schließen AWT, Swing, JavaFX & SWT 6
L JFrame-Verhalten bei Klick auf Schließen-Kreuz ändern AWT, Swing, JavaFX & SWT 3
klattiator Icon und Button zum Schließen in einem Tab AWT, Swing, JavaFX & SWT 3
M JFileChooser schließen AWT, Swing, JavaFX & SWT 2
W Problem bei awt und Swing mit Schließen des Fensters AWT, Swing, JavaFX & SWT 2
T JDiaolog schließen. AWT, Swing, JavaFX & SWT 5
P Schließen-Button bei JTabbedPane? AWT, Swing, JavaFX & SWT 2
V JFrame schließen und Programmzeile(n) ausführen AWT, Swing, JavaFX & SWT 3
A Eins von zwei offnen Fenster/Frames schließen AWT, Swing, JavaFX & SWT 2
S methode aufrufen beim Schließen von GUI AWT, Swing, JavaFX & SWT 7
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
J Fenster schließen ohne das Programm zu beenden AWT, Swing, JavaFX & SWT 3
S JFrame per Button schließen AWT, Swing, JavaFX & SWT 3
D WindowEvent beim Schließen eines JFrame AWT, Swing, JavaFX & SWT 20
G ein AWT-Frame schließen . AWT, Swing, JavaFX & SWT 8
A Schließen eines JOptionPane.showConfirmDialog AWT, Swing, JavaFX & SWT 6
C Beim Schließen eines fensters, schließen sich alle AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben