Hallöchen,
ich soll für die Schule ein ziemlich unfangreiches Teil schreiben und möchte daher dass das Ding so gut wie möglich aussieht....
Nun habe ich aber ein Problem mit meinem mit der Größe und Anordnung einiger Komponenten.....
Ich benutze das GridbagLayout und habe z.B. JTabbedPane auf mein Center Panel gelegt....ich kann aber weder die Position noch Größe meines Tabpanes bestimmen...ich würde gerne das es in der oberen rechten ecke des Bildschrims und über das ganze Center Panel angezeigt wird.......gridx und gridy und sowas hab ich schon probiert....hat irgendwie nicht so richtig funktioniert
hier meine Fenster Klasse.......
...ich wäre jedem sehr dankbar der mir bei meinem Problem weiterhelfen könnte....
ich soll für die Schule ein ziemlich unfangreiches Teil schreiben und möchte daher dass das Ding so gut wie möglich aussieht....
Nun habe ich aber ein Problem mit meinem mit der Größe und Anordnung einiger Komponenten.....
Ich benutze das GridbagLayout und habe z.B. JTabbedPane auf mein Center Panel gelegt....ich kann aber weder die Position noch Größe meines Tabpanes bestimmen...ich würde gerne das es in der oberen rechten ecke des Bildschrims und über das ganze Center Panel angezeigt wird.......gridx und gridy und sowas hab ich schon probiert....hat irgendwie nicht so richtig funktioniert
hier meine Fenster Klasse.......
Code:
package gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableModel;
import model.MeinADM;
import model.TableSorter;
import controller.ButtonAdapter;
import controller.ButtonAdapterBerechnen;
import controller.ButtonAdapterEntfernePartei;
import controller.ButtonAdapterNeuePartei;
import controller.ButtonAdapterTabpane;
/**
*
* @author bannert
* Demo vom 14.Mai 2013 - swing-Fenster mit Layouts und Widgets
* Array mit RadioButton hinzugefügt und Ereignisbehandlung hinzugefügt.
* Menuleiste eingebaut.
* JTable mit abstraktem Datenmodell eingebaut.
*/
public class MeinFenster extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
//Attribute
private JTextField txName;
private JTextField txGesamtanzahlMandate;
private JTextField txGesamtanzahlStimmen;
private JTextField txwahlkreis;
private JTextField txabgeordnete;
private JLabel lbAusgabe ;
private JTabbedPane tabpane;
private JTable tableTab1 ;
private JTable tableTab2 ;
private int schalter;
// private final int MAX = 2;
// private JRadioButton[] rb = new JRadioButton[MAX]; // Array für RadioButton
// private ButtonGroup rbGroup = new ButtonGroup();;
private JTextPane txPane = new JTextPane();
// public JRadioButton[] getRb() {
// return rb;
// }
//
// public void setRb(JRadioButton[] rb) {
// this.rb = rb;
// }
// Default -Konstruktor
public MeinFenster() throws HeadlessException {
this("Mein Fenster");
}
public JTextField getTxName() {
return txName;
}
public void setTxName(JTextField txName) {
this.txName = txName;
}
public JLabel getLbAusgabe() {
return lbAusgabe;
}
public void setLbAusgabe(JLabel lbAusgabe) {
this.lbAusgabe = lbAusgabe;
}
public String getTxGesamtanzahlMandate() {
return txGesamtanzahlMandate.getText();
}
public JTextField getTxGesamtanzahlStimmen()
{
return txGesamtanzahlStimmen;
}
public void setTxGesamtanzahlStimmen(String inhalt) {
this.txGesamtanzahlStimmen.setText(inhalt);
}
public JTabbedPane getTabpane() {
return tabpane;
}
public int getSchalter()
{
return schalter;
}
public void setSchalter(int schalter)
{
this.schalter = schalter;
}
public JTable getTabelleTab1() {
return tableTab1;
}
public void setTabelleTab1(JTable tabelle) {
this.tableTab1 = tabelle;
}
public JTable getTabelleTab2() {
return tableTab2;
}
public void setTabelleTab2(JTable tabelle) {
this.tableTab2 = tabelle;
}
public MeinFenster(String titel) throws HeadlessException {
super(titel);
// schließen des Fenster
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Menüleiste auf Fenster legen -------------
this.setJMenuBar(new MenuLeiste(this));
//-------------------------------------------
// Content Pane holen
Container cpane = this.getContentPane();
// BorderLayout für die ContentPane einstellen
BorderLayout blayout = new BorderLayout();
cpane.setLayout(blayout);
// Fünf Panel auf die Bereiche des Borderlayouts legen
JPanel pnlNord = new JPanel();
JPanel pnlSued = new JPanel();
JPanel pnlWest = new JPanel();
//JPanel pnlOst = new JPanel();
JPanel pnlMitte = new JPanel();
// Border einstellen für Panel
pnlNord.setBorder(BorderFactory.createLineBorder(Color.BLUE));
pnlNord.setBackground(Color.BLUE);
pnlSued.setBorder(BorderFactory.createLineBorder(Color.BLACK));
pnlWest.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//pnlOst.setBorder(BorderFactory.createLineBorder(Color.BLACK));
pnlMitte.setBorder(BorderFactory.createLineBorder(Color.GRAY));
// alle fünf Panel auf die Content Pane legen
cpane.add(pnlNord, BorderLayout.NORTH);
cpane.add(pnlSued, BorderLayout.SOUTH);
cpane.add(pnlWest, BorderLayout.WEST);
//cpane.add(pnlOst, BorderLayout.EAST);
cpane.add(pnlMitte, BorderLayout.CENTER);
// GridBagLayoutManager für fünf Panel einstellen
GridBagLayout gridlayout = new GridBagLayout();
pnlNord.setLayout(gridlayout);
pnlSued.setLayout(gridlayout);
pnlWest.setLayout(gridlayout);
//pnlOst.setLayout(gridlayout);
pnlMitte.setLayout(gridlayout);
// Nun Widgets konstruieren und auf die Panel legen
// fangen wir an mit dem Nordpanel (die Reihenfolge spielt aber keine Rolle)
// NordPanel -----------------------
GridBagConstraints constrNord = new GridBagConstraints();
// Label
JLabel lbName = new JLabel("Die meisten Mandate hat die Partei...");
lbName.setForeground(Color.yellow);
constrNord.gridx = 0;
constrNord.gridy = 0;
constrNord.anchor = GridBagConstraints.WEST;
pnlNord.add(lbName, constrNord);
// Textfield
//txName = new JTextField(20 );
//constrNord.gridx = 10;
//constrNord.gridy = 0;
//constrNord.anchor = GridBagConstraints.EAST;
//pnlNord.add(txName, constrNord);
// Label
// lbAusgabe = new JLabel(" ");
// constrNord.gridx = 0;
// constrNord.gridy = 10;
// constrNord.anchor = GridBagConstraints.CENTER;
// constrNord.gridwidth = GridBagConstraints.REMAINDER;
// pnlNord.add(lbAusgabe, constrNord);
// SuedPanel -----------------------
GridBagConstraints constrSued = new GridBagConstraints();
// //Radio Buttons
// for(int i = 0;i< rb.length; i++){
// if(i==0)
// {
// rb[i] = new JRadioButton("Hare/Niemeyer");
//
// }
// if(i==1)
// {
// rb[i] = new JRadioButton("d'Hondt");
//
// }
// constrSued.gridx = 20;
// constrSued.gridy = 15+i;
// constrSued.anchor = GridBagConstraints.SOUTH;
//
// pnlSued.add(rb[i], constrSued);
//
// // ohne RadioButton-Group funktionieren die RadioButton wie Checkboxen
// rbGroup.add(rb[i]); // button in die Group legen
//
// // Listener anbinden
// rb[i].addActionListener( new RadioButtonAdapter( this) );
// }
// // eine Button auswählen, der angewählt ist.
// rb[0].setSelected(true);
// JLabel Gesamtzahl Mandate
JLabel GesamtzahlMandate = new JLabel("Gesamtzahl Mandate:");
constrSued.gridx = 5;
constrSued.gridy = 15;
pnlSued.add(GesamtzahlMandate, constrSued);
// JLabel Gesamtzahl Stimmen
JLabel GesamtzahlStimmen = new JLabel("Gesamtzahl Stimmen:");
constrSued.gridx = 5;
constrSued.gridy = 16;
pnlSued.add(GesamtzahlStimmen, constrSued);
// JLabel Wahlkreis
JLabel Wahlkreis = new JLabel(" Wahlkreis:");
constrSued.gridx = 5;
constrSued.gridy = 18;
pnlSued.add(Wahlkreis, constrSued);
// JLabel Abgeordnete
JLabel Abgeordnete = new JLabel("Anzahl Abgeordnete:");
constrSued.gridx = 5;
constrSued.gridy = 20;
pnlSued.add(Abgeordnete, constrSued);
// Textfield Gesamtanzahl Mandate
txGesamtanzahlMandate = new JTextField(10);
constrSued.gridx = 9;
constrSued.gridy = 15;
pnlSued.add(txGesamtanzahlMandate, constrSued);
// Textfield Gesamtanzahl Stimmen
txGesamtanzahlStimmen = new JTextField(10);
constrSued.gridx = 9;
constrSued.gridy = 16;
pnlSued.add(txGesamtanzahlStimmen, constrSued);
// Textfield Wahlkreis
txwahlkreis = new JTextField(10);
constrSued.gridx = 9;
constrSued.gridy = 18;
pnlSued.add(txwahlkreis, constrSued);
// Textfield Abgeordnete
txabgeordnete = new JTextField(10);
constrSued.gridx = 9;
constrSued.gridy = 20;
pnlSued.add(txabgeordnete, constrSued);
// Button Neue Partei
JButton btNeuePartei = new JButton(" Neue Partei ");
constrSued.gridx = 10;
constrSued.gridy = 15;
constrSued.weightx = 1.0; // Gewichtung
constrSued.weighty = 1.0; // Gewichtung
//constrSued.fill = GridBagConstraints.HORIZONTAL;
pnlSued.add(btNeuePartei, constrSued);
btNeuePartei.addActionListener(new ButtonAdapterNeuePartei( this));
// Button Entferne Partei
JButton btEntfernePartei = new JButton("Entferne Partei");
constrSued.gridx = 10;
constrSued.gridy = 18;
constrSued.weightx = 1.0; // Gewichtung
constrSued.weighty = 1.0; // Gewichtung
//constrSued.fill = GridBagConstraints.HORIZONTAL;
pnlSued.add(btEntfernePartei, constrSued);
btEntfernePartei.addActionListener(new ButtonAdapterEntfernePartei( this));
// Button Berechne
JButton btOK = new JButton("Berechnen");
constrSued.gridx = 30;
constrSued.gridy = 16;
constrSued.weightx = 1.0; // Gewichtung
constrSued.weighty = 1.0; // Gewichtung
//constrSued.fill = GridBagConstraints.HORIZONTAL;
pnlSued.add(btOK, constrSued);
// Dieser Button soll auf ein Ereignis reagieren
// Listener an das Quellobjekt anbinden
//btOK.addActionListener(new ActionAdapterButton());
btOK.addActionListener(new ButtonAdapterBerechnen( this));
// CenterPanel ---------------------
GridBagConstraints constrCenter = new GridBagConstraints();
// CenterPanel ------Tab Hare/niemeyer---------------
Object dataTable1[][] = {{"Partei 1"}, {"Partei 2"}, {"Partei 3"}, {"Partei 4"}};
String feldnameTable1[] = { "Parteiname", "Stimmen", "Division", "Gewonnene Mandate", "Rest Mandate", "Gesamt Mandate" };
DefaultTableModel modelTable1 = new DefaultTableModel(dataTable1, feldnameTable1);
tableTab1 = new JTable(modelTable1);
JScrollPane scrPaneTableTab1 = new JScrollPane(tableTab1);
// JTabel ins CenterPanel legen ----------------
//MeinADM adm = new MeinADM(); // abstraktes Datenmodell
//TableSorter meinSorter = new TableSorter( adm ); // TabelSorter
// CenterPanel ------d'Hondt---------------
Object dataTable2[][] = {{"1"}, {"2"}, {"3"}};
String feldnameTable2[] = { "Divisor", "Partei 1", "Partei 2", "Partei 3" };
DefaultTableModel modelTable2 = new DefaultTableModel(dataTable2, feldnameTable2);
tableTab2= new JTable(modelTable2);
JScrollPane scrPaneTableTab2 = new JScrollPane(tableTab2);
//meinSorter.setTableHeader( tabelle.getTableHeader() );
// Scrollpane
//scrPaneTabelle.setPreferredSize(new Dimension(120,100));
tabpane = new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT );
tabpane.addTab("Hare/Niemeyer", scrPaneTableTab1);
tabpane.addTab("d'Hondt", scrPaneTableTab2);
tabpane.addChangeListener(new ButtonAdapterTabpane(this));
pnlMitte.add(tabpane, constrCenter);
// Panel West ----------------------------------
GridBagConstraints constrWest = new GridBagConstraints();
constrWest.gridx = 0;
constrWest.gridy = 0;
constrWest.anchor = GridBagConstraints.WEST;
// TextArea in Scrollpane auf das WestPanel legen
JScrollPane scrPane = new JScrollPane(txPane);
scrPane.setPreferredSize(new Dimension(200,200));
pnlWest.add(scrPane, constrWest);
// puh! das war ganz schön viel!
}// end of Konstruktor
/**
* Diese methode kann den Inhalt einer LinkedList in der TextArea anzeigen.
* @param zeilen (LinkedList) - alle Zeilen befinden sich in der LinkedList
*/
public void dateiInhaltAnzeigen ( LinkedList <String> zeilen){
Iterator <String>it = zeilen.iterator();
String zeile = "";
while( it.hasNext()){
zeile += it.next();
zeile += System.getProperty("line.separator");
}
txPane.setText(zeile);
}
/**
* updateLAF
* lafStyle =
* "javax.swing.plaf.metal.MetalLookAndFeel",
* "com.sun.java.swing.plaf.motif.MotifLookAndFeel",
* "com.sun.java.swing.plaf.windows.WindowsLookAndFeel",
* "com.sun.java.swing.plaf.gtk.GTKLookAndFeel",
* "com.sun.java.swing.plaf.motif.MotifLookAndFeel"
* ------------------------------------------
* look & feel einstellen
* ------------------------------------------
*/
void updateLAF(String lafStyle){
System.out.println("updateLAF = " + lafStyle);
try{
UIManager.setLookAndFeel( lafStyle );
SwingUtilities.updateComponentTreeUI( this );
}
catch(Exception ex){
System.out.println("Fehler beim L&F " + ex.getMessage());
}
this.pack(); // alles schön packen
}
// innere Klasse
// class ActionAdapterButton implements ActionListener{
//
// public void actionPerformed(ActionEvent arg0) {
// System.out.println("Test Button klick");
// }
//
// }// end of inner class
}// end of class
...ich wäre jedem sehr dankbar der mir bei meinem Problem weiterhelfen könnte....