Kontextmenü

babuschka

Top Contributor
Hallo zusammen,
ich hab hier ein (nicht von mir erstelltes) Java-Programm.

Es geht darum: Auf einem USB-Stick läuft dieses Programm und in einem Fenster wird die USB-Stick Seriennummer ausgelesen.
Ich kann die Seriennummer zwar markieren und manuell mit STRG+C rauskopieren, würde aber gern ein ein Kontexmenü haben, in dem man dann auf "kopieren" klicken kann.

Hier der Auszug aus dem Programm, in dem die Seriennummer erscheint.

Java:
public void setSerialNoText(String serial) {
		if (serial.length() > 0) {
			labSerialNo.setText("USB-Stick erfolgreich verifiziert (" + serial
					+ ")");	
			panSerialNo.setColor(Color.GREEN);
			// Use serial as password suffix
			frmPwdChange.setPasswdSuffix(StringObfuscator.obfuscate(serial));
		} else {
			labSerialNo
					.setText("USB-Stick nicht verifiziert! Bitte kontaktieren Sie Ihren Administrator.");
		}
	}

Und eben auf die "serial" geht es.

Bitte bitte bitte! Ich hoffe mir kann jemand helfen von euch, ich bin noch neu in der Materie und auch neu in diesem Forum
Danke im Voraus!
Viele Grüße
Dennis
:oops:
 

babuschka

Top Contributor
Danke für die schnelle Antwort, werde ich gleich mal testen.

Hm, also irgendwie sind meine JAVA-Kenntnisse so schlecht, dass ich es nicht hinbekomme. :bahnhof:
 
Zuletzt bearbeitet von einem Moderator:

VfL_Freak

Top Contributor
Moin,

also ich habe hier mal vor geraumer Zeit eine Klasse "Kontextmenue" geschrieben :

Java:
package myPackage.gui;  // Teil meines Projekts

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.text.JTextComponent;

public class KontextMenu
{
	JPopupMenu menu = new JPopupMenu();
	private JMenuItem entry = null;

	public KontextMenu(final JTextComponent comp)
	{
		ActionListener al = new ActionListener() 
		{
			public void actionPerformed( ActionEvent e )
			{
				if(comp.getToolkit().getSystemClipboard() != null) 
				{
					if( e.getActionCommand().equals("Ausschneiden") ) 
					{
						comp.cut();
					} 
					else if( e.getActionCommand().equals("Kopieren") ) 
					{
						comp.copy();
					} 
					else if( e.getActionCommand().equals("Einfügen") ) 
					{
						comp.paste();
					}
					else if( e.getActionCommand().equals("Alles markieren") ) 
					{
						comp.selectAll();
					}
				}
			}
		};

		comp.addMouseListener( new MouseAdapter() 
		{
			public void mouseReleased( MouseEvent me ) 
			{
				if ( me.isPopupTrigger() )
				{
					// Prüft, ob das TextComponent editierbar ist
					if( comp.isEditable() )
					{
						menu.getComponent(2).setEnabled(true);
						menu.getComponent(4).setEnabled(true);
					}
					else
					{
						menu.getComponent(2).setEnabled(false);
						menu.getComponent(4).setEnabled(false);
					}

					menu.show( me.getComponent(), me.getX(), me.getY() );
				}
			}
		}
		);

		menu.add(new JMenuItem("Menü"));
		menu.getComponent(0).setEnabled(false);

		menu.addSeparator();

		entry = new JMenuItem( "Ausschneiden" );
		menu.add( entry );
		entry.addActionListener(al);

		entry = new JMenuItem( "Kopieren" );
		menu.add( entry );
		entry.addActionListener(al);

		entry = new JMenuItem( "Einfügen" );
		menu.add( entry );
		entry.addActionListener(al);

		menu.addSeparator();

		entry = new JMenuItem( "Alles markieren" );
		menu.add( entry );
	        entry.addActionListener(al);
	}
}

Aufruf und Zuweisung irgendwo anders:
Java:
myPackage.gui.KontextMenu ktmTextfelder = null;
// ...
JTextField tfName1 = new JTextField();
// ...
ktmTextfelderxx = new myPackage.gui.KontextMenu( tfName1 );

Sollte eigentlich im Wesenlichen so funktionieren ... musst es halt auf Deine Package-Pfade anpassen :D

Gruß
Klaus
 

Ähnliche Java Themen


Oben