tree action

Status
Nicht offen für weitere Antworten.

CeRbErUs2k

Mitglied
Kann mir jemand sagen wie ich in einem tree einen ActionListener einbaue?
also wenn ich auf ein untermenu vom tree klicke sollte eine aktion ausgeführt werden. wie mache ich das?
 
Variante 1:
Du machst dir nen eigenen Tree.

Code:
public class MyTree 
extends JTree 
implements MouseListener {

    public MyTree() {
        super();
        addMouseListener(this);
    }

...


    /**
     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
     */
    public void mouseClicked(MouseEvent e) {

       /* hier kommt dein Code rein */

    }
    
    /**
     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
     */
    public void mouseEntered(MouseEvent e) {}
    
    /**
     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
     */
    public void mouseExited(MouseEvent e) {}
    
    /**
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
     */
    public void mousePressed(MouseEvent e) {}
    
    /**
     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
     */
    public void mouseReleased(MouseEvent e) {}
}

Variante 2:
Den MouseListener in eine eigene Klasse packen und der Instanz des von dir verwendeten Trees mit addMouseListener() hinzufügen.
 
Stimmt.. sowas wie 3. ist natürlich auch naheliegend. Meine Varianten hatte ich letztens zum Zweck genutzt ein Popup-Menü anzuzeigen und da brauche ich nen MouseEvent um die Taste und genaue Position (Pixel) abzufragen.
 
irgendwie hab ich auf java.sun nix gefunden wie man das geanu macht! ich hoffe ihr könnt mir da ein bisschen unter die arme greiffen!
das problem ist immer noch das selbe!

Code:
import java.awt.*; 
import java.awt.event.*;
import java.util.Hashtable;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionListener;

public class GUIFrame extends Frame implements ActionListener { 
	MenuBar menubar = new MenuBar(); 
	Menu menu; 
	Menu submenu; 
	MenuItem menuItem; 
	MenuItem closeItem; 
	MenuItem clientsItem; 
	MenuItem aclientsItem; 
	MenuItem dclientsItem; 
	List list = new List();
	List listA = new List();
	List listD = new List();
	Panel p = new Panel();
	Panel p2 = new Panel();
	Panel p3 = new Panel();
	JTree tree;
	
	GUIFrame() { 
		setLayout(new BorderLayout()); 
		
		p.setLayout(new BorderLayout());
		add(p);
		//p.setSize(695,600);
		//p.add(new Nexos(),BorderLayout.CENTER); 
		add(p3, BorderLayout.WEST);
		String[][] sampleData = {
				{"Clients"}, {"Active Clients", "Deact Clients", "All Clients"},
				{"Moudules"}, {"List Modules"},
		};
		
		
		Hashtable h = new Hashtable();
		
		for (int i = 0; i < sampleData.length; i+=2) {
			h.put(sampleData[i][0], sampleData[i + 1]);
		}
		tree = new JTree(h);
		p3.setLayout(new BorderLayout());
		p3.setSize(200,600);
		p3.add(tree, BorderLayout.CENTER);
		p3.setVisible(true);
		
		addWindowListener(new WindowAdapter () { 
			public void windowClosing(WindowEvent e) { 
				System.exit(0); 
			} 
		}); 
		
		
		//erstes menu 
		menu = new Menu("File");
		menubar.add(menu); 
		closeItem = new MenuItem("Close"); 
		closeItem.addActionListener(this); 
		menu.add(closeItem); 
		
		//zweites menu 
		menu = new Menu("List");
		menubar.add(menu);
		submenu = new Menu("Clients"); 
		menu.add(submenu); 
		
		//untermenu Clients
		clientsItem = new MenuItem("All Clients");
		clientsItem.addActionListener(this);
		submenu.add(clientsItem);
		aclientsItem = new MenuItem("Active Clients");
		aclientsItem.addActionListener(this);
		submenu.add(aclientsItem);
		dclientsItem = new MenuItem("Deactive Clients");
		dclientsItem.addActionListener(this);
		submenu.add(dclientsItem);
		
		setMenuBar(menubar); 
		setTitle ("Nexocor"); 
		setSize(895, 600); 
		setLocationRelativeTo(null); 
		setVisible(true);
	}  
	
	//frame close
	public void actionPerformed(ActionEvent e) { 
		if (e.getSource() == closeItem) { 
			setVisible(false); 
			dispose(); 
			System.exit(0); 
		} 
		else if (e.getSource() == clientsItem) {
			clientFrame();
		}
		else if(e.getSource() == aclientsItem) {
			aclientFrame();
		}
		else if(e.getSource() == dclientsItem) {
			dclientFrame();
		}
	}
	//ausgabe der der clients
	public String getInhalt() {
		InputClient clist = new InputClient();
		System.out.println(clist.GetNumberOfClients());
		
		Font heading = new Font("Courier", Font.BOLD, 14);
		
		
		list.add("ALL CLIENTS");
		list.add("-----------");
		list.add(" ");
		
		for (int i = 0; i < clist.GetNumberOfClients(); ++i) {
			System.out.println("processing client" + i);
			
			Client c = clist.GetClient(i);
			list.add("install client hostname:     " + c.installClientHostname);
			list.add("client name:                 " + c.clientName);
			list.add("architecture:                " + c.arch);
			list.add("release:                     " + c.release);
			list.add("directory:                   " + c.directory);
			list.add("activation date:             " + c.activationDate);
			list.add("activator:                   " + c.activator);
			list.add("*************************************");
		}
		
		return list.toString();
	}
	//ausgabe der aktiven clients
	public String getInhaltA() {
		
		InputClient clist = new InputClient();
		System.out.println(clist.GetNumberOfClients());
		
		Font heading = new Font("Courier", Font.BOLD, 14);
		
		
		list.add("ACTIVE CLIENTS");
		list.add("-----------");
		list.add(" ");
		
		for (int i = 0; i < clist.GetNumberOfActClients(); ++i) {
			System.out.println("processing client" + i);
			
			
			Client c = clist.GetActClient(i);
			list.add("install client hostname:     " + c.installClientHostname);
			list.add("client name:                 " + c.clientName);
			list.add("architecture:                " + c.arch);
			list.add("release:                     " + c.release);
			list.add("directory:                   " + c.directory);
			list.add("activation date:             " + c.activationDate);
			list.add("activator:                   " + c.activator);
			list.add("*************************************");
		}
		
		return list.toString();
	}
	//ausgabe der deaktivierten clients
	public String getInhaltD() {
		
		InputClient clist = new InputClient();
		System.out.println(clist.GetNumberOfClients());
		
		Font heading = new Font("Courier", Font.BOLD, 14);
		
		//setFont(heading);
		list.add("DEACT CLIENTS");
		list.add("-----------");
		list.add(" ");
		
		for (int i = 0; i < clist.GetNumberOfDeactClients(); ++i) {
			System.out.println("processing client" + i);
			
			
			Client c = clist.GetDeactClient(i);
			list.add("install client hostname:     " + c.installClientHostname);
			list.add("client name:                 " + c.clientName);
			list.add("architecture:                " + c.arch);
			list.add("release:                     " + c.release);
			list.add("directory:                   " + c.directory);
			list.add("activation date:             " + c.activationDate);
			list.add("activator:                   " + c.activator);
			list.add("*************************************");
		}
		
		return list.toString();
	}
	//fenster generierung für clients
	public void clientFrame() {
		list.removeAll();
		list.setFont(new Font("Courier", Font.BOLD, 14));
		list.setBackground(Color.white);
		list.setSize(795, 500);
		getInhalt();
		
		p.setVisible(false);
		add(p2);
		p2.setLayout(new BorderLayout());
		p2.remove(list);
		p2.add(list, BorderLayout.CENTER);
		list.setVisible(true);
		validate();
	}
	//  fenster generierung für aktive clients
	public void aclientFrame() {
		list.removeAll();
		list.setFont(new Font("Courier", Font.BOLD, 14));
		list.setBackground(Color.white);
		list.setSize(795, 500);
		getInhaltA();
		
		p.setVisible(false);
		add(p2);
		p2.setLayout(new BorderLayout());
		p2.remove(list);
		p2.add(list, BorderLayout.CENTER);
		list.setVisible(true);
		validate();
	}
	//  fenster generierung für deaktivierte clients
	public void dclientFrame() {
		list.removeAll();
		list.setFont(new Font("Courier", Font.BOLD, 14));
		list.setBackground(Color.white);
		list.setSize(795, 500);
		getInhaltD();
		
		p.setVisible(false);
		add(p2);
		p2.setLayout(new BorderLayout());
		p2.remove(this);
		p2.add(list, BorderLayout.CENTER);
		list.setVisible(true);
		validate();
	}
	
	public static void main(String [] args) { 
		new GUIFrame(); 
		
	}
}

/*class Nexos extends Canvas{
 public void paint (Graphics g) { 
 g.setColor(Color.white); 
 g.fillRect(0,0,895,1000); 
 g.setColor(new Color(25,30,114)); 
 g.fillRect(0,0,600,115); 
 g.setColor(Color.red); 
 g.fillRect(655,0,240,115); 
 g.setColor(new Color(25,30,114)); 
 g.setFont(new Font("Frutiger" ,Font.BOLD, 160)); 
 g.drawString("nexocor" ,80,400); 
 g.setColor(Color.red); 
 g.setFont(new Font("Frutiger" , Font.BOLD, 30)); 
 g.drawString("Smart Engineering Server",365,450); 
	 } 
}*/
[/code]
 
na für die elemente im menu! mit dem tree sollten die gleichen optionen wie im menu dann auch noch angeklickt werden können. ich hoffe is nich zu schlimm programmiert hab noch nicht so erfahrungen!
 
Mich gruselt der Code schon so ziemlich... Ich kann auch nicht erkennen, dass du mal unsere Ideen aufgegriffen hättest....
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben