Zum Inhalt springen

isPopupTrigger


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

folgendes Problem:

Ich habe im folgenden Code die Stelle rot markiert auf die es ankommt!

Und zwar will ich auf Rechtsklick mit der Maus in einem Panel ein Popup erscheinen lassen.

Allerdings steht bei mir der PopupTrigger für Rechtsklick auf false.

Jetzt die Frage:

Wie krieg ich es hin, daß bei Rechtsklick das Popup erscheint, bzw. wie kann ich die Tasten der Maus abfragen?

im Voraus schon vielen Dank!

ciao Krain


import java.awt.*;

import javax.swing.*;

import java.awt.event.*;


public class MenuDemo

{

	public static void main(String[] args)

	{

		JFrame frame=new JFrame("Menü - Demo");

		JPanel panel=new JPanel();

		frame.getContentPane().add(panel,"Center");


		ActionListener listener=new MenuItemActionListener(panel);


		JMenu file=new JMenu("Datei");

		file.setMnemonic('D');

		file.add(menuItem("Neu",listener,"new",'N',KeyEvent.VK_N));

		file.add(menuItem("Öffnen...",listener,"open",'O',KeyEvent.VK_O));

		file.add(menuItem("Speichern",listener,"save",'S',KeyEvent.VK_S));

		file.add(menuItem("Speichern unter",listener,"saveas",'U',KeyEvent.VK_U));


		JMenu edit=new JMenu("Bearbeiten");

		edit.setMnemonic('B');

		edit.add(menuItem("Ausschneiden",listener,"cut",0,KeyEvent.VK_X));

		edit.add(menuItem("Kopieren",listener,"copy",'K',KeyEvent.VK_C));

		edit.add(menuItem("Einfügen",listener,"paste",0,KeyEvent.VK_Y));


		JMenuBar menu=new JMenuBar();

		menu.add(file);

		menu.add(edit);


		frame.setJMenuBar(menu);


		final JPopupMenu popup=new JPopupMenu();

		popup.add(menuItem("Öffnen...",listener,"open",0,0));

		popup.addSeparator();

		JMenu colors=new JMenu("Farben");

		popup.add(colors);

		ButtonGroup colorgroup=new ButtonGroup();

		colors.add(radioItem("Rot",listener,"color(red)",colorgroup));

		colors.add(radioItem("Grün",listener,"color(green)",colorgroup));

		colors.add(radioItem("Blau",listener,"color(blue)",colorgroup));


[COLOR=red]	panel.addMouseListener(new MouseAdapter()	{

			public void mousePressed(MouseEvent e)	{

			if(e.isPopupTrigger())

					popup.show((Component)e.getSource(),e.getX()+10,e.getY()+10);

			}

		});[/COLOR]


		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		frame.setSize(400,400);

		frame.setVisible(true);

	}


	public static JMenuItem menuItem(String name, ActionListener listener,

		String cmd,int mnemonic,int acc)

	{

		JMenuItem item=new JMenuItem(name);

		item.addActionListener(listener);

		item.setActionCommand(cmd);

		if(mnemonic!=0)

			item.setMnemonic((char) mnemonic);

		if(acc!=0)

			item.setAccelerator(KeyStroke.getKeyStroke(acc,Event.CTRL_MASK));

		return item;

	}


	public static JMenuItem radioItem(String label, ActionListener listener,

		String cmd,ButtonGroup mutExGroup)

	{

		JMenuItem item=new JMenuItem(label);

		item.addActionListener(listener);

		item.setActionCommand(cmd);

		mutExGroup.add(item);

		return item;

	}


	public static class MenuItemActionListener implements ActionListener

	{

		private Component parent;


		public MenuItemActionListener(Component parent)

		{

			this.parent=parent;

		}


		public void actionPerformed(ActionEvent e)

		{

			JMenuItem item=(JMenuItem) e.getSource();

			String cmd=item.getActionCommand();

			JOptionPane.showMessageDialog(parent,cmd + " wurde ausgewählt!");

		}

	}


}

Geschrieben

Hi,

erst mal möchte ich dir sagen, dass du anscheinend den Sinn einer objektorientierten Sprache nicht verstanden hast.

So wie programmierst, könnte man auch ne Skriptsprache nehmen. ;)

Zum Problem:

ob es sich bei der Maustaste um die rechte handelt, kannst du mit:

----------------

SwingUtilities static boolean isRightMouseButton(MouseEvent anEvent)

Returns true if the mouse event specifies the right mouse button.

----------------

herausfinden.

Gruß Jaraz

Geschrieben

Ich übe ja noch!

Das Beispiel ist aus dem Buch "Java Foundation Classes in a Nutshell", welches mir als sehr gut empfohlen worden ist!

Dieses Beispiel hat aber eben bei mir mit rechter Maustaste nicht funktioniert - ich werde es jetzt mal mit Deiner Abfrage versuchen!

Danke

Geschrieben

Achso, und ich dachte das sollte jetzt der Anfang eines Programms werden. :D

Aber als Beispiel kann man es so gerade noch vertreten.

Wie du dann ein Popup anzeigt, musst du dir selber suchen.

Mein Beitrag war nur für das erkennen, um welche Maustaste es sich handelt.

Gruß Jaraz

Geschrieben

Wie könnte ich denn das Programm objektorientiert gestalten?

Die Klassen auslagern?

Oder was meinst Du?

Vielleicht kann ich mir daraus ja doch noch was brauchbares bauen!?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...