hi,
ich hab ein split pane erstellt und im rechten splitfenster ein borderlayout , in der Borderlayout.NORTH Region will ich zwei “Zeilen” haben bzw oben ein paar buttons horizontal nebeneinander und eine “Zeile” tiefer ein Textfeld das sich über die ganze Breite erstellt…
nunja hab bissl rumprobiert… kann ich das mit dem Standard FlowLayout machen oder nur mit GridBagLayout ? habs mit dem GridBL versucht und bkeomms irgendwie nicht hin mit den Constraints,…
wenn ich das mit dem WindowBuilder öffne scheint der GirdBagLayout für das BorderLayout NORTH Panel richtig gesetzt zu sein, aber wenn ich paar komponenten dazumache wird das GridBagL nicht mehr im WindowBuilder fenster angezeigt bzw ist plötzlich verschwunden…?!
hier mein Quellcode, ist ein bisschen unübersichtlich:
package de.htw.saarland.kinodb.window;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.LayoutManager;
import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuItem;
import javax.swing.JSplitPane;
import javax.swing.JList;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import java.awt.FlowLayout;
import java.awt.CardLayout;
import javax.swing.BoxLayout;
import java.awt.Component;
public class Ticket_Overview extends JFrame {
private JFrame frame;
private JPanel leftSplitPane, rightSplitPane;
private JSplitPane splitPane;
private Object[] dings = {"PC","Desktop","Computer","Lampe","Flugzeug","Haus","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"};
private JList<?> filmlist;
private JScrollPane filmScrollPane;
private JPanel rightNorth, rightSouth;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new Ticket_Overview();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Ticket_Overview() {
frame = new JFrame("Kinoverwaltung V0.1 - Ticketverkauf");
//setTitle("Kinoverwaltung V0.1 - Ticketverkauf");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 753, 452);
frame.setVisible(true);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnStart = new JMenu("Start");
menuBar.add(mnStart);
JMenuItem mntmEntry_2 = new JMenuItem("Entry1");
mnStart.add(mntmEntry_2);
JMenuItem mntmEntry_3 = new JMenuItem("Entry2");
mnStart.add(mntmEntry_3);
JMenu mnHilfe = new JMenu("Hilfe");
menuBar.add(mnHilfe);
JMenuItem mntmEntry = new JMenuItem("Entry1");
mnHilfe.add(mntmEntry);
JMenuItem mntmEntry_1 = new JMenuItem("Entry2");
mnHilfe.add(mntmEntry_1);
getContentPane().setLayout(null);
//################################################################################# LINKES SPLITPANE
//GRIDBAGLAYOUT FÜR DAS LINKE SPLITPANE PANEL FESTLEGEN
GridBagLayout gbl = new GridBagLayout();
//GRIDBAGCONSTRAINT FÜR DIE LISTE DER FILME IN DER TICKETÜBERSICHT
GridBagConstraints listConstraints = new GridBagConstraints();
listConstraints.gridx = 0;
listConstraints.gridy = 0;
listConstraints.fill = GridBagConstraints.BOTH;
listConstraints.gridwidth = 1;
listConstraints.gridheight = 1;
listConstraints.weightx = 0; //Verteilung des Überschüssigen Platzes
listConstraints.weighty = 100;
listConstraints.insets = new Insets(0,0,10,0);
//GridLayout gl = new GridLayout(0,1);
//LINKES SPLITPANE ERSTELLEN MIT GRIDBAGLAYOUT
leftSplitPane = new JPanel();
leftSplitPane.setLayout(gbl);
leftSplitPane.setPreferredSize(new Dimension(300,600));
//LISTE DER FILME ERSTELLEN UND INS LINKE PANEL AN ERSTER STELLE EINSETZEN
filmlist = new JList(dings);
//filmlist.setPreferredSize(new Dimension(100, 300));
filmlist.setVisibleRowCount(10);
filmlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
filmScrollPane = new JScrollPane(filmlist,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
filmScrollPane.setPreferredSize(new Dimension(100,300));
//gbl.setConstraints(leftSplitPane, listConstraints);
leftSplitPane.add(filmScrollPane, listConstraints);
//BUTTON FÜR KOMMENDE FILME ERSTELLEN MIT CONSTRAINTS UNTER DIE LISTE
GridBagConstraints kommendeFilmeConstraints = new GridBagConstraints();
kommendeFilmeConstraints.gridx = 0;
kommendeFilmeConstraints.gridy = kommendeFilmeConstraints.RELATIVE;
kommendeFilmeConstraints.gridwidth= 1;
kommendeFilmeConstraints.gridheight=1;
kommendeFilmeConstraints.insets = new Insets(0,0,10,0);
JButton kommendeFilme = new JButton("kommende Filme");
kommendeFilme.setHorizontalAlignment(SwingConstants.LEADING);
leftSplitPane.add(kommendeFilme,kommendeFilmeConstraints);
//gbl.setConstraints(kommendeFilme, kommendeFilmeConstraints );
//CONSTRAINTS FÜR TEXTFELD ERSTELLEN
GridBagConstraints reservierungFeldConstraints = new GridBagConstraints();
reservierungFeldConstraints.gridx = 0;
//ReservierungFeldConstraints.gridy = 0;
//ReservierungFeldConstraints.gridwidth = 1;
//ReservierungFeldConstraints.gridheight = 1;
reservierungFeldConstraints.fill=GridBagConstraints.HORIZONTAL;
reservierungFeldConstraints.weightx=1.0;
reservierungFeldConstraints.weighty=0.5;
reservierungFeldConstraints.insets = new Insets(10,0,10,0);
//TEXTFELD ERSTELLEN MIT CONSTRAINTS UNTER DEN BUTTON
JTextField reservierungFeld = new JTextField("Reservierung suchen");
reservierungFeld.setLayout(new GridBagLayout());
reservierungFeld.setPreferredSize(new Dimension(1000,30));
reservierungFeld.setBackground(Color.RED);
leftSplitPane.add(reservierungFeld, reservierungFeldConstraints);
//gbl.setConstraints(reservierungFeld, ReservierungFeldConstraints);
//BUTTON ERSTELLEN FÜR RESERVIERUNG SUCHEN MIT CONSTRAINTS UNTER DAS RESERVIERUNG SUCHEN-FELD
JButton reservierungSuchen = new JButton("Reservierung suchen");
reservierungSuchen.setLayout(new GridBagLayout());
GridBagConstraints reservierungSuchenConstraint = new GridBagConstraints();
reservierungSuchenConstraint.gridx = 0;
reservierungSuchenConstraint.gridx = 0;
reservierungSuchenConstraint.gridwidth = 1;
reservierungSuchenConstraint.gridheight = 1;
reservierungSuchenConstraint.weightx = 1.0;
reservierungSuchenConstraint.weighty = 0.5;
leftSplitPane.add(reservierungSuchen,reservierungSuchenConstraint);
//########################################################################### RECHTES SPLITPANE
//RECHTES SPLITPANEL ERSTELLEN MIT BORDERLAYOUT
rightSplitPane = new JPanel(new BorderLayout());
rightSplitPane.setPreferredSize(new Dimension(600,600));
//CONSTRAINTS FÜR BORDERLAYOUT.NORTH ERSTELLEN
GridBagConstraints constraints = new GridBagConstraints();
//constraints.gridx = 0;
//constraints.gridy = 0;
constraints.fill = GridBagConstraints.BOTH;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0; //Verteilung des Überschüssigen Platzes
constraints.weighty = 0;
constraints.insets = new Insets(0,0,0,0);
//PANEL FÜR BORDERLAYOUT.NORTH ERSTELLEN MIT CONSTRAINTS
rightNorth = new JPanel();
rightSplitPane.add(rightNorth,BorderLayout.NORTH);
rightNorth.setLayout(new BoxLayout(rightNorth, BoxLayout.X_AXIS));
JLabel filmtitel = new JLabel("Filmtitel: ");
//filmtitel.setPreferredSize(new Dimension(50,30));
rightNorth.add(filmtitel );
JTextField filmname = new JTextField("Filmname");
//filmname.setPreferredSize(new Dimension(10,10));
rightNorth.add(filmname);
JLabel uhrzeitdatum = new JLabel("Datum,Uhrzeit");
rightNorth.add(uhrzeitdatum);
JTextField datumuhrzeit = new JTextField("Datum,Uhrzeit");
rightNorth.add(datumuhrzeit);
JLabel saal = new JLabel("Saal");
saal.setHorizontalAlignment(SwingConstants.RIGHT);
rightNorth.add(saal);
JTextField saaltext = new JTextField("Saal");
rightNorth.add(saaltext);
JButton weiter = new JButton("Weiter");
weiter.setHorizontalAlignment(SwingConstants.RIGHT);
rightNorth.add(weiter);
JTextField test = new JTextField("ALKDLAKSLDKLAKSLDKLASKD");
rightSouth = new JPanel();
rightSplitPane.add(rightSouth,BorderLayout.SOUTH);
rightSouth.setBackground(Color.BLUE);
rightSouth.setPreferredSize(new Dimension(600,30));
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftSplitPane, rightSplitPane);
//splitPane.setSize(new Dimension(600,400));
splitPane.setOneTouchExpandable(true);
//splitPane.setBounds(0, 0, 434, 241);
splitPane.setResizeWeight(0.1); // Fensterverhältnis links / rechts zu Beginn
//splitPane.setDividerLocation(150 + splitPane.getInsets().left); //linke Breite : 150 px bis zum Divider
/*splitPane.setDividerLocation(splitPane.getSize().width //rechte Breite: 150 px bis zum Divider
- splitPane.getInsets().right
- splitPane.getDividerSize()
- 150);*/
splitPane.setDividerLocation(0.5); //25% of space go to left
frame.getContentPane().add(splitPane);
frame.pack();
}
}