kopieren und einfügen im TextField

Jens K

Mitglied
hallo,

ich habe eine kurze Frage. Ich habe ein TextField und ich möchte etwas einfügen (wie normalerweise über rechtsklick > einfügen). Wie kann man diese Funktion aktivieren
 
Bastl dir doch aus nen BufferedImage und der Graphics selbst ein Kontexmenü.
Denke dass es grundsätzlich recht einfach sein sollte, einbinden kannst dus dann per MouseListener, hat irgend ne Methode die die Maustaste abfragt. Auf der anderen Seite kannst du es per statische Variable einer Klasse. (Denke MouseEvent, aber erst einmal verwendet.)
Steuern kannst du auch per MouseListener, wie z. B. wenn die Maus über nen Menüpunkt bewegt wird den Background ändern.
 
Moin,

das ist relativ einfach zu lösen:
Code:
public class KontextMenu 
{
    private 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);

    }
} // class KontextMenu

und dann einfach an die gewünschte Komponente hängen (hier als Beispiel ein Textfeld) :
Code:
public JTextField tfPasswort = new JTextField();
KontextMenu ktmTextfelder = null;
ktmTextfelder = new KontextMenu( tfPasswort );

Hoffe, es hilft Dir weiter!

Gruß
Klaus
 
Zurück