NSMenu selected event

Sojus

Sojus

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2006
Beiträge
144
Reaktionspunkte
3
Hallo Macuser

Also ich habe ein Problem mit NSMenuItem, habe auch schon auf developer.apple.com gesucht und in diversen Foren, habe aber nur leute gefunden die das problem auch nicht lösen konnten.


Es ist so, ich möchte ein event auslösen wenn der nutzer mit der maus über ein NSMenuItem geht also wenn es ausgewählt ist. Mit action/target kann ich ja nur die methode definieren, die beim klicken auf das Item ausgelöst wird. Habe wirklich lange gesucht aber nichts gefunden.

Hat jemand eine idee wie ich das realisieren könnte, oder wo ich noch danach suchen könnte.

mfg
 
habe es schon mit itemChanged: oder submenuAction: probiert funzt aber auch nicht

mhm dann ist es anscheinend nicht möglich :-(
 
thx für den Tip

das ganze war mir dann aber etwas zu aufändig, desshalb hab ich das ganze mit SWING gemacht. Läuft genau so gut, nur die JR hat ein bisschen lange bis sie gestartet ist.

Hier mein kleines Programm
http://grafschokola.gr.funpic.de/FB/JavaFileManager.app.zip

Ich finde es ziemlich praktisch, es ergänzt den finder dort wo mir funktionen fehlen.

Ach ja, hier ist noch eine von JTextField geerbte klasse:

Code:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;
import javax.swing.JTextField;
public class FileTextField extends JTextField implements KeyListener {
	public FileTextField() {
		this.addKeyListener(this);
		this.setFocusTraversalKeysEnabled(false);
	}

	private void enter() {
		File d = new File(this.getText());
		if(d.isDirectory() || d.isFile()){
			try {
				Runtime.getRuntime().exec(new String[]{"open",this.getText()});
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	private void tab() {
		String defined_path = this.getText().substring(0,
				this.getText().lastIndexOf("/") + 1);
		String suggestion = this.getText().substring(
				this.getText().lastIndexOf("/") + 1, this.getText().length());
		
		String res = this.getSuggestion(new File(defined_path), suggestion);
		if(res != null){
			this.setText(defined_path+res);
		}
	}

	private String getSuggestion(File file, String sug) {
		String res = null;
		int found = 0;
		String[] content = file.list();
		for (int i = 0; i < content.length; i++) {
			if(content[i].length() >= sug.length()){
				if (content[i].substring(0, sug.length()).equals(sug)) {
					res = content[i];
					found++;
				}
			}	
		}
		if (found == 1) {
			return res;
		} else {
			return null;
		}
	}

	public void keyPressed(KeyEvent arg0) {
		if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
			this.enter();
		} else if (arg0.getKeyCode() == KeyEvent.VK_TAB) {
			this.tab();
		}
	}

	public void keyReleased(KeyEvent arg0) {

	}

	public void keyTyped(KeyEvent arg0) {

	}

}

Wenn man darin einen Pfad eingibt wird der mit tab verfollständigt, mit enter wird das ganze dann mit dem entsprechenden Programm geöffnet, bei einem Verzeichnis zbs. mit dem Finder. Vllt kann das jemand brauchen

mfg
 
Zurück
Oben Unten