JSplitPane

Andrea_go

Grünschnabel
Hallo Zusammen,

habe ein Problem und zwar habe ich ein JSplitPane gebaut und möchte auf der linken Seite eine JTree einsetzen und wenn man auf einen Ast klickt, dass sich auf der rechten Seite ein Eingabeformular öffnet. Leider hat meine Quellcode den Fehler , dass mein JTree leider nicht angezeigt wird. Würde mich freuen wenn mir jemand einen Tip geben könnte was ich ändern muss.

Vielen Dank im Voraus
Andrea

Code:
  import java.awt.*;

   import javax.swing.*;

   import javax.swing.tree.DefaultMutableTreeNode;

    

   class SplitPane

   			extends 	JFrame

   {

   	  private		   JSplitPane  splitPaneV;

   	  private		   JSplitPane  splitPaneH;

   	  private		   JPanel			panel1;

   	  private		   JTree	   panel2;

   	  private		   JPanel			panel3;

    

    

   	  public SplitPane()

   	  {

   			setTitle( "Bankverwaltung" );

   			setBackground( Color.gray );

    

   			JPanel topPanel = new JPanel();

   			topPanel.setLayout( new BorderLayout() );

   			getContentPane().add( topPanel );

    

   		  

   			

   			createPanel2();

   			createPanel3();

    

   		   

   			splitPaneV = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );

   			topPanel.add( splitPaneV, BorderLayout.CENTER );

    

   			splitPaneH = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );

   			splitPaneH.setLeftComponent( panel1 );

   			splitPaneH.setRightComponent( panel2 );

    

   			splitPaneV.setLeftComponent( splitPaneH );

   			splitPaneV.setRightComponent( panel3 );

   }

    

   	  

   	  public void createPanel2()

   	  {

   			panel2 = new JTree();

   		   

   			

   	  

   			

   				  DefaultMutableTreeNode top =

   				    new DefaultMutableTreeNode("Banksverwaltung");

   				  DefaultMutableTreeNode section =

   				    new DefaultMutableTreeNode("Kontodaten");

   				  section.add(new

   				    DefaultMutableTreeNode("Anlegen"));

   				  section.add(new

   				    DefaultMutableTreeNode("Editieren"));

   				  section.add(new

   				    DefaultMutableTreeNode("Löschen"));

   	  

   				  top.add(section);

    

   				  section =

   				    new DefaultMutableTreeNode("Protokolle");

   				  section.add(new

   				    DefaultMutableTreeNode("Anlegen"));

   				  section.add(new

   					      DefaultMutableTreeNode("Editieren"));

   				  top.add(section);

   			//JTree tree = new JTree(top);

   				  //JScrollPane scrollPane = new JScrollPane(tree);

   	  

   	  }

    

   	  public void createPanel3()

   	  {

   			panel3 = new JPanel();

   			panel3.setLayout( new BorderLayout() );

   			panel3.setPreferredSize( new Dimension( 400, 100 ) );

   			panel3.setMinimumSize( new Dimension( 100, 50 ) );

   		

   			panel3.add( new JLabel( "Notes:" ), BorderLayout.NORTH );

   			panel3.add( new JTextArea(), BorderLayout.CENTER );

   	  }

    

   	  public static void main( String args[] )

   	  {

   		

   			SplitPane mainFrame	 = new SplitPane();

   			JTree tree = new JTree();

   			

   			JScrollPane scrollPane = new JScrollPane(tree);

   			mainFrame.pack();

   			mainFrame.setVisible( true );

   	  }

   }
 
Wenn ich das richtig überblicke legt createPanel2() zwar einen Baum an, bringt ihn jedoch nicht auf ein Panel oder Frame, also:

Gebe den Baum über die Methode zurück

Code:
public JTree createPanel2()
JTree tree = new JTree();
...
return tree;

und dann

Code:
splitPaneH.setRightComponent(createPanel2());

Es gibt da ein herrliches Tutorial auf den Sun-Seiten :

http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

Hast Du Dir schon mal überlegt JTabbedPane, also "Karteikarten" für Deine Aufgabe zu Nutzen?
 
Hi Forum,

bin schier am verzweifeln habe mir die Nacht um die Ohren gehauen und zu keine Ergebnis gekommen. Habe eine JSplitPane gemacht (auf der rechten Seite ein JTree mit ein paar Blättern jetzt möchte ich das wenn man auf ein Blatt klickt sich im rechten Fenster ein EingabeFormular öffnet. Habe den TreeSelectionListener und passende Methode implemetiert wie ihr am Code sehen könnt. Meine Frage ist wie kann ich einem Blatt ein Formular zuweisen ,dass es beim Anklicken auf die der rechten Seite anzeigt?

Würde mich freuen wenn mir Jemand helfen kann.
Lg
Andrea

Code:
import java.awt.*;
   import javax.swing.*;
   import javax.swing.tree.DefaultMutableTreeNode; 
   
   import javax.swing.JEditorPane;
   import javax.swing.JFrame;
   import javax.swing.JPanel;
   import javax.swing.JScrollPane;
   import javax.swing.JSplitPane;
   import javax.swing.UIManager;
   
   import javax.swing.JTree;
   import javax.swing.tree.DefaultMutableTreeNode;
   import javax.swing.tree.TreeSelectionModel;
   import javax.swing.event.TreeSelectionEvent;
   import javax.swing.event.TreeSelectionListener;
   
   import java.net.URL;
   import java.io.IOException;
   import java.awt.Dimension;
   import java.awt.GridLayout;
   
   class SplitPane extends JFrame implements TreeSelectionListener {
   	
   	private JTree tree;
   	private JPanel ptree;
   	 
   	 public void valueChanged(TreeSelectionEvent e){
   		DefaultMutableTreeNode node = (DefaultMutableTreeNode)
 		 		 	 tree.getLastSelectedPathComponent();
   
   	  
   }
   	public SplitPane()
   	{
   		setTitle( "Prüfungsverwaltung" );
   		setBackground( Color.gray );
   		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	   
   		JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
   		DefaultMutableTreeNode top = new DefaultMutableTreeNode("Prüfungsverwaltung");
   		
   		tree = new JTree(top);
   		tree.getSelectionModel().setSelectionMode
 				(TreeSelectionModel.SINGLE_TREE_SELECTION);
   		tree.addTreeSelectionListener(this);
   		
   		DefaultMutableTreeNode section = new DefaultMutableTreeNode("Prüfungstermin");
   		section.add(new DefaultMutableTreeNode("Anlegen"));
   		section.add(new DefaultMutableTreeNode("Editieren"));
   		section.add(new DefaultMutableTreeNode("Löschen"));
      
   		top.add(section);
   
   		section = new DefaultMutableTreeNode("Prüfungsprotokoll");
   		section.add(new DefaultMutableTreeNode("Anlegen"));
   		section.add(new DefaultMutableTreeNode("Editieren"));
   	   
   		top.add(section);
   	   
   		JScrollPane scroll = new JScrollPane(new JTree(top));
   		JPanel lblPanel = new JPanel();
   		
   		
   		lblPanel.add(new JLabel("Hallo"));
   	   
   	   
   	   
   		sp.setLeftComponent(scroll);
   		sp.setRightComponent(lblPanel);
   	
   		Dimension minimumSize = new Dimension(400, 400);
   			   scroll.setMinimumSize(minimumSize);
   			   lblPanel.setMinimumSize(minimumSize);
   			   sp.setDividerLocation(100);
   			   sp.setPreferredSize(new Dimension(500, 300));
   	
   	
   	
   	
   		
   		
   
   	
   	   
   		this.getContentPane().add(sp);
   		pack();
   		setVisible(true);
   	}
   	private class eFormular {
   	
   	private eFormular(){
   	 JButton button = new JButton("Hallo");
   	
   	}
   		
   		
   		
   	}
   		  
   	  
   	public static void main (String args[]) {
   		new SplitPane(); 
   	}
   }
 
Zuletzt bearbeitet:
Hallo

kleiner Schusselfehler mit großer Folge in Zeile 61:

JScrollPane scroll = new JScrollPane(new JTree(top));

richtig:JScrollPane scroll = new JScrollPane(tree);

Ich habe jetzt mal ein paar Zeilen geändert, ich hoffe es hilft Dir weiter...


Code:
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;

class SplitPane extends JFrame implements TreeSelectionListener {
	
	private JTree tree;
	private JPanel ptree;
	private JPanel lblPanel = new JPanel();
	 
	 public void valueChanged(TreeSelectionEvent event){
		DefaultMutableTreeNode node = (DefaultMutableTreeNode)
   			   	 tree.getLastSelectedPathComponent();
		lblPanel.removeAll();
		lblPanel.add(new JLabel(node.getUserObject().toString()));
		lblPanel.getParent().repaint();
		lblPanel.revalidate();
	}
	 
	public SplitPane()
	{
		setTitle( "Prüfungsverwaltung" );
		setBackground( Color.gray );
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   
		JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
		DefaultMutableTreeNode top = new DefaultMutableTreeNode("Prüfungsverwaltung");
		
		tree = new JTree(top);
		tree.getSelectionModel().setSelectionMode
				(TreeSelectionModel.SINGLE_TREE_SELECTION);
		tree.addTreeSelectionListener(this);
		
		DefaultMutableTreeNode section = new DefaultMutableTreeNode("Prüfungstermin");
		section.add(new DefaultMutableTreeNode("Anlegen"));
		section.add(new DefaultMutableTreeNode("Editieren"));
		section.add(new DefaultMutableTreeNode("Löschen"));
   
		top.add(section);

		section = new DefaultMutableTreeNode("Prüfungsprotokoll");
		section.add(new DefaultMutableTreeNode("Anlegen"));
		section.add(new DefaultMutableTreeNode("Editieren"));
	   
		top.add(section);
	   
		JScrollPane scroll = new JScrollPane(tree);
		
		lblPanel.add(new JLabel("Hallo"));
	   
		sp.setLeftComponent(scroll);
		sp.setRightComponent(lblPanel);
	
		Dimension minimumSize = new Dimension(400, 400);
			   scroll.setMinimumSize(minimumSize);
			   lblPanel.setMinimumSize(minimumSize);
			   sp.setDividerLocation(100);
			   sp.setPreferredSize(new Dimension(500, 300));
	
			this.getContentPane().add(sp);
		pack();
		setVisible(true);
	}
	private class eFormular {
	
	private eFormular(){
	 JButton button = new JButton("Hallo");
	
	}
		
		
		
	}
		  
	  
	public static void main (String args[]) {
		new SplitPane(); 
	}
}
 
Zurück