JPanel Klasse einer anderen Klasse im JSplitPane zuordnen

Status
Nicht offen für weitere Antworten.

spidermobile

Bekanntes Mitglied
Hallo Zusammen,

ich über gerade mal wieder und erstelle gerade eine kleine GUI. Damit die Klasse MainFrame nicht zu voll und unübersichtlich wird, möchte ich die einzelnen Panel's in andere Klassen auslagern. Wie aus dem Beispiel zu entnehmen ist, habe ich die mainPanel in leftPanel und rightPanel unterteilt und diese in 2 JSplitPane untergebracht.

Mein Problem ist, dass ich die Klasse LeftPanel nun dem leftPanel aus der Hauptklasse zuweisen möchte. Es gelingt mit leider nicht. Im beigefühten Beispiel habe ich diese dann der mainPanel zugeordnet. Es wird zwar was angezeigt, aber leider nicht so, wie ich es gerne hätte.

Wie kann ich den Inhalt der Klasse LeftPanel, dem Panel leftPanel ( createLeftPanel() )der Klasse MainFrame zuordnen?

Vielen Dank für einen kleinen Tipp!!!

Code:
package project.gui;

import project.core.*;

import java.awt.*;

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import javax.swing.border.*;
import java.net.URL;
import java.util.Vector;
import javax.swing.tree.*;

import project.core.PropertiesSettings;

public class MainFrame extends JFrame{

    private static final long serialVersionUID = 1L;
    
    private MainMenu mainMenu;
    private MainToolBar mainToolBar;
    
    private JPanel mainPanel;
    private LeftPanel leftPanel;
    private JPanel rightPanel;
    
    private JPanel headPanel;
    private JPanel navigatorPanel;
    private JPanel buttonPanel;
    
    private JSplitPane leftSplitPane;
    private JSplitPane rightSplitPane;
    
    public MainFrame() {
        
        setTitle( "Test" );
        setBackground( new Color(bgNormalR, bgNormalG, bgNormalB) );
        
        createMainPanel();
        createLeftPanel();
        createRightPanel();
        createSplitPane();
        
        getContentPane().add( leftSplitPane );
        
    }
    
    private void createMainPanel() {

        mainPanel = new JPanel();
        mainPanel.setLayout( new BorderLayout() );
        mainPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
        
        mainMenu = new MainMenu(this);
        mainMenu.setBorder(null);
        mainMenu.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
        mainPanel.add( mainMenu, BorderLayout.NORTH );
        
        mainToolBar = new MainToolBar(this);
        // mainPanel.add( mainToolBar, BorderLayout.NORTH );
        
    }
    
    private void createLeftPanel() {
        
        leftPanel = new LeftPanel(this); // <-- ?????????????
        
    }
    
    private void createRightPanel() {
        
        rightPanel = new JPanel();
//        rightPanel.setLayout( new BorderLayout() );
        rightPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
        rightPanel.setBorder(new EtchedBorder( new Color(bgNormalR,bgNormalG,bgNormalB), new Color(bgNormalR,bgNormalG,bgNormalB) ));

    }
    
    private void createSplitPane() {
        
        rightSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );
        leftSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );

        rightSplitPane.setLeftComponent( mainPanel );
        rightSplitPane.setRightComponent( rightPanel );  
        rightSplitPane.setDividerLocation( 724 );
        flattenSplitPane(rightSplitPane);
        
        leftSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );        
        leftSplitPane.setLeftComponent( leftPanel );
        leftSplitPane.setRightComponent( rightSplitPane );
        leftSplitPane.setDividerLocation( 150 );
        flattenSplitPane(leftSplitPane);
    
        
    }
    
    public void flattenSplitPane(JSplitPane jSplitPane) {
        jSplitPane.setUI(new BasicSplitPaneUI() {
            public BasicSplitPaneDivider createDefaultDivider() {
                return new BasicSplitPaneDivider(this) {
                    public void setBorder(Border b) {
                    }
                };
            }
        });
      jSplitPane.setBorder( null );        
//        jSplitPane.setBorder(new BevelBorder(BevelBorder.RAISED) );
//        jSplitPane.setBorder(new BevelBorder(BevelBorder.LOWERED) );
//      jSplitPane.setBorder(new EtchedBorder(new Color(bgDarkR,bgDarkG,bgDarkB), new Color(bgDarkR,bgDarkG,bgDarkB)) );        
        
    }
}

Code:
package project.gui;

import project.core.GradientButton;

import java.awt.*;

import javax.swing.*;

import project.core.PropertiesSettings;

public class LeftPanel extends JPanel{
   
    private MainFrame frame;
   
    private JPanel mainPanel;
    private JPanel headPanel;
    private JPanel navigatorPanel;
    private JPanel buttonPanel;
   
   
    public LeftPanel(MainFrame frame) {
        this.frame = frame;
       
        mainPanel = new JPanel();
        mainPanel.setLayout( new GridLayout(3, 1) );
        mainPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
//        mainPanel.setMinimumSize( new Dimension( 150, 768 ) );
       
        createHeadPanel();
        createNavigatorPanel();
        createButtonPanel();
       
        mainPanel.add(headPanel);
        mainPanel.add(navigatorPanel);
        mainPanel.add( buttonPanel);
       
        frame.add( mainPanel, BorderLayout.WEST ); // <-- ????????????
       
//        frame.getContentPane().add( frame.leftPanel );
    }

   
    private void createHeadPanel() {
        headPanel = new JPanel();
        headPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
        headPanel.add( new JButton( "Navigator" ) );
       
    }
   
    private void createNavigatorPanel() {
        navigatorPanel = new JPanel();
        navigatorPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
       
    }
   
    private void createButtonPanel() {
       
        buttonPanel = new JPanel();
        buttonPanel.setBackground( new Color(bgNormalR,bgNormalG,bgNormalB) );
        buttonPanel.setLayout( new GridLayout(4, 1));
       
        buttonPanel.add( new GradientButton( "Navigator" ) );
        buttonPanel.add( new JButton( "Favoriten" ) );
        buttonPanel.add( new JButton( "Prozesse" ) );
        buttonPanel.add( new JButton( "Historie" ) );
       
    }

}
 

MasterEvil

Bekanntes Mitglied
Hoi, also die Referenz auf MainFrame brauchst du in dem LeftPanel nicht!
Wenn du leftPanel instanziierst in der MainFrame-Klasse dann wird ja daraus dein Panel, dieses fügst du ja dann in dem SplitPane ein.

Also das hier weg:
Code:
frame.add( mainPanel, BorderLayout.WEST );
 

MasterEvil

Bekanntes Mitglied
Nach dem ichs eben nachgebaut habe ists mir aufgefallen :)
Also, dein LeftPanel ist ja ein JPanel, du erstellst aber im Konstruktor des LeftPanel einen neuen JPanel nämlich mainPanel und dieser wird dann nirgendwo hinzugefügt deswegen ist auch nichts zu sehen.

Entweder du fügst mainPanel dem eigentlichen LeftPanel hinzu was aber doppelt gemoppelt währe oder du fügst deine weiteren Panels einfach direkt dem LeftPanel hinzu, also mainPanel komplett weglassen.
Hier mal dein Beispiel ein bisschen eingekürzt:

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

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class MainFrame extends JFrame {
    private static final long serialVersionUID = 1L;
    
    private JPanel mainPanel;
    private LeftPanel leftPanel;
    private JPanel rightPanel;
   
    private JSplitPane leftSplitPane;
    private JSplitPane rightSplitPane;
    
    public static void main(String[] args) {
    	MainFrame foo = new MainFrame();
    	foo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	foo.setSize(640, 480);
    	foo.setVisible(true);
    }
   
    public MainFrame() {
        setTitle( "Test" );

        createMainPanel();
        createLeftPanel();
        createRightPanel();
        createSplitPane();
       
        getContentPane().add( leftSplitPane );
    }
   
    private void createMainPanel() {
        mainPanel = new JPanel();
        mainPanel.setLayout( new BorderLayout() );
        mainPanel.setBackground(Color.RED);
        mainPanel.add(new JLabel("mainPanel"));
    }
   
    private void createLeftPanel() {
        leftPanel = new LeftPanel();
    }
   
    private void createRightPanel() {
        rightPanel = new JPanel();
        rightPanel.setBackground(Color.BLUE);
        rightPanel.add(new JLabel("rightPanel"));
    }
   
    private void createSplitPane() {
        rightSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );
        leftSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );

        rightSplitPane.setLeftComponent( mainPanel );
        rightSplitPane.setRightComponent( rightPanel ); 
        rightSplitPane.setDividerLocation(0.5);
       
        leftSplitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );       
        leftSplitPane.setLeftComponent( leftPanel );
        leftSplitPane.setRightComponent( rightSplitPane );
        leftSplitPane.setDividerLocation(0.5);
    }
}

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

import javax.swing.JButton;
import javax.swing.JPanel;


public class LeftPanel extends JPanel {
	   
	private static final long serialVersionUID = 2L;

	private JPanel headPanel;
    private JPanel navigatorPanel;
    private JPanel buttonPanel;
   
   
    public LeftPanel() {

    	/*
    	 * Statt mainPanel einfach der Instanz dieser LeftPanel-Klasse hinzufügen
    	 */

    	super();
    	setLayout( new GridLayout(3, 1) );
       
        createHeadPanel();
        createNavigatorPanel();
        createButtonPanel();
       
        add(headPanel);
        add(navigatorPanel);
        add( buttonPanel);
    }

   
    private void createHeadPanel() {
        headPanel = new JPanel();
        headPanel.add( new JButton( "Navigator" ) );
        headPanel.setBackground(Color.ORANGE);
    }
   
    private void createNavigatorPanel() {
        navigatorPanel = new JPanel();
        navigatorPanel.setBackground(Color.ORANGE);
    }
   
    private void createButtonPanel() {
        buttonPanel = new JPanel();
        buttonPanel.setLayout( new GridLayout(4, 1));
       
        buttonPanel.add( new JButton( "Navigator" ) );
        buttonPanel.add( new JButton( "Favoriten" ) );
        buttonPanel.add( new JButton( "Prozesse" ) );
        buttonPanel.add( new JButton( "Historie" ) );
        buttonPanel.setBackground(Color.ORANGE);
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Wie kann meine Klasse in ein JPanel zeichnen? Java Basics - Anfänger-Themen 14
G JPanel aus anderer Klasse anzeigen Java Basics - Anfänger-Themen 2
lin Übergabe an JPanel-Klasse Java Basics - Anfänger-Themen 3
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben