Layoutproblem

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
ich würde gern mein Layout so gestalten.
java6nb.jpg


In der grossen fläche in der mitte möchte ich später zeichnen. (Ich hab ein Panel vorgesehen.)
Ich habe das Gridbaglayout verwendet und es ist das dabei rausgekommen
java25km.jpg

(asd is das statuslabel.)
Nun möcht ich das wie oben schon eingezeichnet auf den oberen bzw utneren rand fixieren damit ich in der mitte mit meinem zeichnenpanel genung platz habe. Kann ich das mit dem Layout irgendwie einstellen oder ist das die falsche Vorgehensweise?

Code:
package javaapplication1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Gui extends JFrame{  
    public Gui() {
        super("Mein Programm");
        setDefaultCloseOperation( EXIT_ON_CLOSE);
        JPanel kontrollpanel=new JPanel();
        JLabel lbeschriftung=new JLabel("Eingabe");
        JTextField tfeingabe=new JTextField();
        JButton beinfuegen=new JButton("Einfügen");
        JButton bloeschen=new JButton(" löschen");
        JButton bbalance=new JButton("neu");
        JButton bbloschen=new JButton("alles löschen");
        
        JPanel pzeichnen=new JPanel();
        JLabel lstatus=new JLabel("asd");
        
        
        Container contents = getContentPane();
        contents.setLayout( new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.insets = new Insets( 5, 5, 5, 5);
        
        gbc.gridx=0;
        gbc.gridy=0;
        gbc.gridwidth = 1;
        gbc.gridheight = 1;
         gbc.weightx = 100;
        gbc.weighty = 100;
         gbc.fill = GridBagConstraints.NONE;
           
         contents.add( lbeschriftung, gbc);
          gbc.gridx=1;
          
          gbc.fill = GridBagConstraints.HORIZONTAL; 
          contents.add( tfeingabe, gbc);  
          gbc.gridx=2;
          contents.add( beinfuegen, gbc);  
          gbc.gridx=3;
          contents.add( bloeschen, gbc); 
          gbc.gridx=4;
          contents.add( bbalance, gbc);
          gbc.gridx=5;
          contents.add( bbloschen, gbc);
        
        gbc.fill = GridBagConstraints.BOTH;
          gbc.gridy=1;
          gbc.gridx=0;
          contents.add( pzeichnen, gbc);
          
          
          gbc.fill = GridBagConstraints.NONE;
          gbc.gridy=2;
          gbc.gridx=0;
          contents.add( lstatus, gbc);
    }
    
    
    
    
    public static void main(String[] args)
    {
      Gui g=new Gui();
        g.setSize(800 , 400);
        g.show();
    }
    
}

Vielen Dank

Grüsse
 

Lim_Dul

Top Contributor
Du kannst das ganze auch mit einem einfacherer LayoutManager in den Griff bekommen: BorderLayout.

Du packst deine Zeichnenfläche in den CENTER Bereich, deine Statusbar in den SOUTH Bereich und Ein Panel für die oberen Komponenten in den NORTH Bereich.

Das Panel für die oberen Komponenten kann dann beispielsweise eine FlowLayout haben.
 
G

Guest

Gast
Hallo,

danke fuer deine Antwort.
Hat ganz gut geklappt.
Nur das Textfeld wird nich richtig angezeigt 8( kann ich das irgendwie einstellen? is bei mir auch beim testen von den anderen layout managern vorgekommen

java8dl.jpg


Code:
package javaapplication1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Gui2 extends JFrame{  
    public Gui2() {
        super("Mein Programm");
        setDefaultCloseOperation( EXIT_ON_CLOSE);
        
        JPanel kontrollpanel=new JPanel();
        JLabel lbeschriftung=new JLabel("Eingabe");
        JTextField tfeingabe=new JTextField();
        JButton beinfuegen=new JButton("Einfügen");
        JButton bloeschen=new JButton(" löschen");
        JButton bbalance=new JButton("neu");
        JButton bbloschen=new JButton("alles löschen");
        
         kontrollpanel.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
        
        
        kontrollpanel.add(lbeschriftung);
        kontrollpanel.add(tfeingabe);
        kontrollpanel.add(beinfuegen);
        kontrollpanel.add(bloeschen);
        kontrollpanel.add(bbalance);
        kontrollpanel.add(bbloschen);
        
        
        JPanel pzeichnen=new JPanel();
        
        
        
        
        JLabel lstatus=new JLabel("Statuslabel");
        
        JPanel pgui=new JPanel();
        pgui.setLayout(new BorderLayout());
        pgui.add("North", kontrollpanel);
        pgui.add("Center", pzeichnen);
       pgui.add("South", lstatus);
       
           Container contents = getContentPane();
            contents.add(pgui);
        
      
    }
    
    
    
    
    public static void main(String[] args)
    {
      Gui2 g=new Gui2();
        g.setSize(800 , 400);
        g.show();
    }
    
}


vielen dank
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben