SelectAll, Cut, Copy und Paste mit mehreren Textfeldern?

msd_tutz

Grünschnabel
Hallo Leute!

ich habe ein Applet mit 10 Textfeldern gebaut. Derweiteren gibt es noch 4 MenuItems Cut, Copy, Paste und
Alles markieren.

Mit jtextfield1.cut(); kam ich nicht sehr weit, da es ja 10 unterschiedliche Felder sind.

Wie kann ich das Ganze so bewerkstelligen, dass bswp. beim Anwählen des Menüpunktes "Alles Markieren" genau das Textfeld gefunden wird, indem der Cursor steht und dann selectAll() auf genau das Textfeld ausgeführt wird?

Mit dieser Herangehensweise könnte man ja dann auch cut(), paste() und copy() ermöglichen nachdem eben der Inhalt des betreffenden Textfeldes markiert wurde.

Vielen Dank für eure Hilfe!

Gruß
Mike

Code:
import javax.swing.*;
import java.awt.*;
import java.*;
import java.awt.event.*;

public class myApplet extends JApplet implements ActionListener
{
   private JPanel jPanel1;
   private JTextField jTextField1;
   private JTextField jTextField2;
   private JTextField jTextField3;
   private JTextField jTextField4;
   private JTextField jTextField5;


   private JMenuItem  mi8;//Ausschneiden
   private JMenuItem  mi9;//Kopieren
   private JMenuItem  mi10;//Einfügen
   private JMenuItem  mi11;//Alles markieren
   
   public void init() {
   
      try {
         initGUI();
      }catch (Exception e){
         e.printStackTrace();
      }
   }
   
   public void initGUI() throws Exception {
   
    JMenuBar menubar = new JMenuBar();
      JMenu menu2 = new JMenu("Bearbeiten");
      
      mi8 = new JMenuItem("Ausschneiden");
      mi8.addActionListener(this);
      mi9 = new JMenuItem("Kopieren");
      mi9.addActionListener(this);
      mi10 = new JMenuItem("Einfügen");
      mi10.addActionListener(this);
      mi11 = new JMenuItem("Alles markieren");
      mi11.addActionListener(this);
      
      menu2.add(mi8);
      menu2.add(mi9);
      menu2.add(mi10);
      menu2.add(mi11);
    
     menubar.add(menu2);
      setJMenuBar(menubar);      
         
      this.setSize(380, 522);
      getContentPane().setLayout(null);
      {
         jPanel1 = new JPanel();
         getContentPane().add(jPanel1);
         jPanel1.setLayout(null);
         jPanel1.setBounds(10, 10, 360, 392);
         {   
            jTextField1 = new JTextField();
            jPanel1.add(jTextField1);
            jTextField1.setBounds(169, 20, 148, 20);
            jTextField1.addActionListener(this);
         }

         {
            jTextField2 = new JTextField();
            jPanel1.add(jTextField2);
            jTextField2.setBounds(169, 50, 148, 20);
            jTextField2.addActionListener(this);
         }
         {   
            jTextField3 = new JTextField();
            jPanel1.add(jTextField3);
            jTextField3.setBounds(169, 80, 148, 20);
            jTextField3.addActionListener(this);
         }
         {
            jTextField4 = new JTextField();
            jPanel1.add(jTextField4);
            jTextField4.setBounds(169, 110, 148, 20);
            jTextField4.addActionListener(this);
         }
         {
            jTextField5 = new JTextField();
            jPanel1.add(jTextField5);
            jTextField5.setBounds(169, 140, 148, 20);
            jTextField5.addActionListener(this);
         }
      }
   }

   public void actionPerformed(ActionEvent ae)
   {
      
//AUSSCHNEIDEN
      if(ae.getSource().equals(mi8))
      {
         
      }   
//KOPIEREN
      if(ae.getSource().equals(mi9))
      {         

      }
//EINFÜGEN
      if(ae.getSource().equals(mi10))
      {         
      
      }
//ALLES MARKIEREN
      if(ae.getSource().equals(mi11))
      {         

      }
   }
}
 
Also du willst, dass die Actions nur auf das Textfeld anzuwenden sind, das gerade benutzt wurde, oder?

Das könntest du ganz einfach mit einem FocusListener und einer Klassenvariablen lösen.

Wenn du das so machen willst, wie ich gefragt hab und du dir unter meiner Idee nichts vorstellen kannst, poste ich dir gerne ein Beispiel.


MFG

zEriX
 
Hallo zEriX,

hinsicht der ganzen Listenermöglichkeiten habe ich noch nicht alles durchschaut.

Also du willst, dass die Actions nur auf das Textfeld anzuwenden sind, das gerade benutzt wurde, oder?

Genau das habe ich vor. Also ich klicke z.B. im Menü auf "Alles markieren", dann soll eben der Inhalt eines Textfeldes markiert werden indem der Cursor steht.

Wenn du das so machen willst, wie ich gefragt hab und du dir unter meiner Idee nichts vorstellen kannst, poste ich dir gerne ein Beispiel.

Das würde mir auf jeden Fall sehr helfen, weil ich keine Idee habe wie ich dieses Problem lösen kann. Vielen Dank.

Gruß
Mike
 
Schau mal hier
Java:
package de.tutorials.swing;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class TextFieldFocusExample extends JFrame {

	private JTextField actTextField = null;

	public TextFieldFocusExample() {

		setSize(300, 300);

		setLayout(new GridLayout(6, 0));

		setDefaultCloseOperation(EXIT_ON_CLOSE);

		for (int i = 0; i < 5; i++) {
			JTextField tf = new JTextField();
			tf.setDragEnabled(true);
			tf.addFocusListener(new FocusAdapter() {

				private Color selectionColor = new Color(255, 255, 191);

				public void focusGained(FocusEvent e) {

					if (actTextField != null)
						actTextField.setBackground(Color.WHITE);
					actTextField = (JTextField) e.getSource();
					actTextField.setBackground(selectionColor);
				}

			});

			add(tf);
		}

		JButton button = new JButton("Ausgabe");

		button.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				System.out.println(actTextField.getText());
			}

		});

		add(button);

	}

	public static void main(String[] args) {
		new TextFieldFocusExample().setVisible(true);
	}

}

MFG

zEriX
 
Zuletzt bearbeitet:
Zurück