Frame mit mehreren areas

mariusbopp

Bekanntes Mitglied
moin ich ma wieder...

hab ein problem bzw ne frage und zwar hab ich einen tree ... jetzt möchte ich aber das rechts von dem tree ein bereich ist in dem der ordnerinhalt angezeigt wird z.b ich klicke links im tree auf eigene dateien und bekomme den inhalt des ordners angezeigt(wie bei windows)

ich hab schon mehreres versucht aber ich bekomme kein 2tes pannel da rein an welcher stelle muss es denn rein ?? und dann brauch ich ja auch einen layoutmanager oder?

Java:
import java.io.*;

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

public class FileTreeTest extends JTree{
  public static void main( String[] args ){
    JFrame frame = new JFrame("tree");
    frame.getContentPane().add( new JScrollPane( new FileTreeTest() ) );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.pack();
    frame.setLocationRelativeTo( null );
    frame.setVisible( true );
  }

  private static FileSystemView SYSTEM = FileSystemView.getFileSystemView();

  public FileTreeTest(){
    setModel( new FileTreeModel() );
    setCellRenderer( new FileTreeCellRenderer() );
  }

  private class FileTreeCellRenderer extends DefaultTreeCellRenderer{
    public FileTreeCellRenderer(){
     
    }

    public Component getTreeCellRendererComponent( JTree tree, Object value, boolean sel, boolean exp, boolean leaf, int row, boolean focus ){
      super.getTreeCellRendererComponent( tree, value, sel, exp, leaf, row, focus );
         
      File file = (File)value;
     
      setIcon( SYSTEM.getSystemIcon( file ) );
      setText( SYSTEM.getSystemDisplayName( file ));
     
      return this;
    }
  }

  private class FileTreeModel implements TreeModel {
    public FileTreeModel() {

    }

    public Object getRoot() {
      return SYSTEM.getHomeDirectory();   
    }

    public int getChildCount(Object parent) {
      return SYSTEM.getFiles( (File) parent, true).
          length;
    }

    public boolean isLeaf(Object node) {
      return ( (File) node).isFile();
    }

    public void addTreeModelListener(TreeModelListener l) {
    }

    public void removeTreeModelListener(TreeModelListener l) {
    }

    public Object getChild(Object parent, int index) {
      return SYSTEM.getFiles( (File) parent, true)[ index];
    }

    public int getIndexOfChild(Object parent, Object child) {
      File[] files = SYSTEM.getFiles( (File) parent, true);

      for (int i = 0; i < files.length; i++)
        if (files[i] == child)
          return i;

      return -1;
    }

    public void valueForPathChanged(TreePath path, Object newValue) {
    }
  }
}
 

AmunRa

Gesperrter Benutzer
JA du brauchst einen LayoutMAnager, hier kann ich dir wohl das BorderLayout empfehlen. Wenn du einfach danach suchst wirt du genug Tutorials finden
 

mariusbopp

Bekanntes Mitglied
klappt nicht ganz :( mein frame überschreibt das immer...

Java:
public static void main( String[] args ){
	  JFrame frame = new JFrame("tree");
	  JPanel content = new JPanel();
      content.setLayout(new BorderLayout());  
  	 frame.getContentPane().add( new JScrollPane( new FileTreeTest() ) );
	 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	 frame.pack();
	 frame.setLocationRelativeTo( null );
	 frame.setVisible( true );
	  }

hab auch shcon versucht einfach ein 2ten pannel da rein zu machen aber da passiert auch nix...
ich hab dann
Java:
JPanel content2= new JPanel;
und hab dann unten
Java:
frame.getContent2Pane.add(new JScrollpane()));

aber das will nicht?! was mach ich falsch?
 

mariusbopp

Bekanntes Mitglied
richtig den hab ich erstmal weg gelassen, hab gedacht erstmal n feld rechts und dann n feld links vom fenster... und wenn ich das hinbekommen hab guck ich weiter
 

mariusbopp

Bekanntes Mitglied
ich hab das ganze mal gebastelt...
am ende soll es so sein
unbenanntcvk.png

:eek:

wie würdest du das denn am besten machen?( ganz am schluss soll oberhalt der beiden fenster noch etwas hinzukommen (textfelf + button))

edit: link vergessen^^

Uploaded with ImageShack.us
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
So in etwa:

Java:
public static void main( String[] args )
{
	JFrame frame = new JFrame("tree");
	
	Box mainBox = Box.createVerticalBox();
	frame.add(mainBox);

	Box headBox = Box.createHorizontalBox();
	mainBox.add(headBox);

	headBox.add(new JLabel("Label"));
	headBox.add(new JButton("Button"));

	JPanel bodyPanel = new JPanel(new CardLayout());
	mainBox.add(bodyPanel);

	JTree tree = new JTree();
	//JTree einrichten...

	JPanel folderContentPane = new FolderContentPane(); //Um den Ordnerinhalt anzuzeigen.
	
	JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tree, folderContentPane);
	bodyPanel.add(splitPane, "SplitPane");

	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.pack();
	frame.setLocationRelativeTo(null);
	frame.setVisible(true);
}

(VHidT)
 

mariusbopp

Bekanntes Mitglied
ich hab den tree ja in mehrere unterklassen gesplittet... die kann ich ja nicht einfach da einfügen

und wenn ich das dann mit add. mache sieht es wieder genau so aus wie vorher
Java:
import java.io.*;

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

public class test extends JTree{
	public static void main( String[] args )
	{
	    JFrame frame = new JFrame("tree");
	    
	    Box mainBox = Box.createVerticalBox();
	    frame.add(mainBox);
	 
	    Box headBox = Box.createHorizontalBox();
	    mainBox.add(headBox);
	 
	    headBox.add(new JLabel("Label"));
	    headBox.add(new JButton("Button"));
	 
	    JPanel bodyPanel = new JPanel(new CardLayout());
	    mainBox.add(bodyPanel);
	 
	    JTree tree = new JTree();
	    
	  
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.getContentPane().add( new JScrollPane( new FileTreeTest() ) );
	    frame.pack();
	    frame.setLocationRelativeTo(null);
	    frame.setVisible(true);
	}

  private static FileSystemView SYSTEM = FileSystemView.getFileSystemView();

  public test(){
    setModel( new FileTreeModel() );
    setCellRenderer( new FileTreeCellRenderer() );
  }

  private class FileTreeCellRenderer extends DefaultTreeCellRenderer{
    public FileTreeCellRenderer(){
     
    }

    public Component getTreeCellRendererComponent( JTree tree, Object value, boolean sel, boolean exp, boolean leaf, int row, boolean focus ){
      super.getTreeCellRendererComponent( tree, value, sel, exp, leaf, row, focus );
         
      File file = (File)value;
     
      setIcon( SYSTEM.getSystemIcon( file ) );
      setText( SYSTEM.getSystemDisplayName( file ));
     
      return this;
    }
  }

  private class FileTreeModel implements TreeModel {
    public FileTreeModel() {

    }

    public Object getRoot() {
      return SYSTEM.getHomeDirectory(); //<---   
    }

    public int getChildCount(Object parent) {
      return SYSTEM.getFiles( (File) parent, true).
          length;
    }

    public boolean isLeaf(Object node) {
      return ( (File) node).isFile();
    }

    public void addTreeModelListener(TreeModelListener l) {
    }

    public void removeTreeModelListener(TreeModelListener l) {
    }

    public Object getChild(Object parent, int index) {
      return SYSTEM.getFiles( (File) parent, true)[ index];
    }

    public int getIndexOfChild(Object parent, Object child) {
      File[] files = SYSTEM.getFiles( (File) parent, true);

      for (int i = 0; i < files.length; i++)
        if (files[i] == child)
          return i;

      return -1;
    }

    public void valueForPathChanged(TreePath path, Object newValue) {
    }
  }
}

 

mariusbopp

Bekanntes Mitglied
okay ich hab es jetzt mal besser hinbekommen hab es mit den boxen gemacht so wie "Volvagia"
klappt auch nur das alignement bekomme ich noch nicht so hin hier ist vertical und horizontal...
center nimmt er mir leider nicht... wie mach ich das?
Java:
	public static void main( String[] args )
	{
	    JFrame frame = new JFrame("DatenTree");
	    
	    Box mainBox = Box.createVerticalBox();
	    frame.add(mainBox);
	 
	    Box headBox = Box.createHorizontalBox();
	    mainBox.add(headBox);
	
	    mainBox.add( new JScrollPane( new FileTreeTest() ) ); //<---- tree
	    
	    headBox.add(new JLabel("blablablabla"));
	    headBox.add(new JButton("Button"));
	 
	    JPanel bodyPanel = new JPanel(new CardLayout());
	    mainBox.add(bodyPanel);
	 
	     	  
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.pack();
	    frame.setLocationRelativeTo(null);
	    frame.setVisible(true);
	}
 

Volvagia

Top Contributor
Am Besten, indem du ein Glue der Box (Vertikal oder Horizontal, keinen allgemeinen) dort addest, wo die Daten nicht sein sollen. (Also für Rechtsbündigkeit links einfügen und umgekehrt.)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
L Kalender Java Frame Java Basics - Anfänger-Themen 7
A Frame Java Basics - Anfänger-Themen 3
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
A Frame java Java Basics - Anfänger-Themen 3
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
F Frame in Frame Java Basics - Anfänger-Themen 3
U GUI - resize frame Java Basics - Anfänger-Themen 13
J Open reading Frame Java Basics - Anfänger-Themen 4
J Erstelltes Frame wird nicht angezeigt Java Basics - Anfänger-Themen 2
K Frame öffnen klappt nicht?! Java Basics - Anfänger-Themen 36
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
A Frame Background Java Basics - Anfänger-Themen 21
S Klassen Klassenname = Frame? Java Basics - Anfänger-Themen 11
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
I Java - Text in neuem Frame wird nicht angezeigt Java Basics - Anfänger-Themen 4
B Frame über Button öffnen Java Basics - Anfänger-Themen 8
R Button soll neuen Frame öffnen Java Basics - Anfänger-Themen 21
L Variablen Frame Variablen-Schleife Java Basics - Anfänger-Themen 3
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
V Frame bleibt grau Java Basics - Anfänger-Themen 5
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
F frame wird nicht angezeigt? Java Basics - Anfänger-Themen 10
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
T Frame öffnen Java Basics - Anfänger-Themen 6
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
I JTable in bestehenden Frame integrieren Java Basics - Anfänger-Themen 6
Y Hilfe: JOGL / OPENGL in Frame Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
A Frame reagiert nicht Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
R Frame Inhalt ausrichten Java Basics - Anfänger-Themen 5
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
kulturfenster Panel in Frame integrieren Java Basics - Anfänger-Themen 5
kulturfenster Per Button Frame schliessen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
M Variable in Frame anzeigen Java Basics - Anfänger-Themen 11
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
N Frame in Frame erstellen Java Basics - Anfänger-Themen 2
B Java-Frame Taschenrechner - String -> Int und umgekehrt Java Basics - Anfänger-Themen 8
G Bild wird im falschen Frame angezeigt Java Basics - Anfänger-Themen 5
G Frame soll Focus behalten Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5
G Frame Applet oder doch was anderes Java Basics - Anfänger-Themen 2
M Frame zeigt Desktop als Hintergrund Java Basics - Anfänger-Themen 2
J Eine swf-datei in einen Frame einfügen? Java Basics - Anfänger-Themen 6
K Schrift und Farben im Frame (Anfänger) Java Basics - Anfänger-Themen 2
D Frame in Center Screen Java Basics - Anfänger-Themen 7
A Frame aus Applet erzeugen und mit Inhalt füllen Java Basics - Anfänger-Themen 5
G Problemme mit: Aufruf einer Klasse aus einem Frame Java Basics - Anfänger-Themen 5
M Frame Schließen Java Basics - Anfänger-Themen 5
H homepage in frame aufrufen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben