Rechte Mousetaste abfangen.

tikemyson

Mitglied
Hallo...

ich wäre froh, wenn Ihr mir bei folgendem Problem weiterhelfen könntet:
Aaaaaaaaaaaaaaaalso:

Ich habe eine einfache Tabelle (wird später ersetzt durch eine 'db-Tabellen-Komponente') bei der ich mit einem Linksklick , die Zeilennummer erfassen kann und ausserdem noch den kompletten Inhalt (Adressinformationen) in ein TextArea reinschreibe.
Nun will ich mit einem rechtsklick auf der Tabelle (und nur dort ) ein pulldownmenü an der Stelle, wo der Klick stattfindet (nicht auf (0/0) Position) erscheinen lassen. In diesem Menue will ich dem Benutzer eine Editier und Lösch-Möglichkeit anbieten.

Könnt Ihr mir weiterhelfen?

Gibt es schon eine vorgefertigte Methode die Mauskoordinaten zu ermitteln?

:rolleyes:

Danke im Voraus!
 

Thomas Darimont

Erfahrenes Mitglied
Servus!

Code:
/*
 * SwingTableExample.java
 *
 * Created on 29. September 2003, 21:02
 */

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

/**
 *
 * @author  Administrator
 */
public class MySwingTable extends javax.swing.JFrame {

	private JPopupMenu jpm = null;
	private MousePressedAdapter mmpa = null;

	/** Creates new form SwingTableExample */
	public MySwingTable() {
		mmpa = new MousePressedAdapter();
		initComponents();
		this.setSize(320, 240);
		initPopupMenu();
	}

	private void initPopupMenu() {
		jpm = new JPopupMenu();
		JMenuItem jmi = new JMenuItem("Funktion1");
		jpm.add(jmi);
		jmi.addMouseListener(mmpa);
		jmi.setActionCommand("Funktion1");
		jmi = new JMenuItem("Funktion2");
		jpm.add(jmi);
		jmi.setActionCommand("Funktion2");
		jmi.addMouseListener(mmpa);

		jmi = new JMenuItem("Funktion3");
		jpm.add(jmi);
		jmi.setActionCommand("Funktion3");
		jmi.addMouseListener(mmpa);

	}

	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	private void initComponents() {
		jPanel1 = new javax.swing.JPanel();
		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();
		jTable1.addMouseListener(mmpa);

		setTitle("Swing Table Example");
		addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent evt) {
				exitForm(evt);
			}
		});

		jPanel1.setLayout(new java.awt.GridBagLayout());

		jPanel1.setMinimumSize(new java.awt.Dimension(320, 240));
		jPanel1.setPreferredSize(new java.awt.Dimension(320, 240));
		jScrollPane1.setMinimumSize(new java.awt.Dimension(320, 240));
		jScrollPane1.setPreferredSize(new java.awt.Dimension(320, 240));
		jTable1
			.setModel(
				new javax
				.swing
				.table
				.DefaultTableModel(new Object[][] {
					{ null, null, null, null },
					{
				null, null, null, null }, {
				null, null, null, null }, {
				null, null, null, null }
		}, new String[] { "Title 1", "Title 2", "Title 3", "Title 4" }));
		jScrollPane1.setViewportView(jTable1);

		jPanel1.add(jScrollPane1, new java.awt.GridBagConstraints());

		getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

		pack();
	}

	/** Exit the Application */
	private void exitForm(java.awt.event.WindowEvent evt) {
		System.exit(0);
	}

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		new MySwingTable().show();
	}

	private class MousePressedAdapter extends MouseAdapter {

		public void mousePressed(MouseEvent evt) {
			if (evt.getButton() == MouseEvent.BUTTON3) {
				if (jpm != null) {

					jpm.show(
						jTable1,
						(int) evt.getPoint().getX(),
						(int) evt.getPoint().getY());
				}
			}
			Object o;
			if ((o = evt.getSource()) instanceof JMenuItem) {
				System.out.println(((JMenuItem) o).getActionCommand());
			}
		}
	}

	// Variables declaration - do not modify
	private javax.swing.JPanel jPanel1;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JTable jTable1;
	// End of variables declaration

}

Gruß Tom
 

Neue Beiträge