Layout Probleme

nata

Bekanntes Mitglied
Hallo Leute,
könnt ihr mir schreiben wo ich fehler mache? Buttons sind zu dich, aber es sollten schmaler sein

Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
 
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
 
 
public class DritteAufgabeFrame extends JFrame{
 
 
    public DritteAufgabeFrame(){
        setTitle("Meine dritte Aufgabe");
        setSize(500,600);
        setLocationByPlatform(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        setLayout(new BorderLayout());
        JPanel oberePanel = new JPanel(new GridLayout(1,3));
        oberePanel.add(new JTextField());
        
        
        String listData[] = {"Apfel", "Birne", "orange"};
        JComboBox comboBox = new JComboBox(listData);
        oberePanel.add(comboBox);
        
        oberePanel.add(new JButton("Button1"));
        
        add(oberePanel, BorderLayout.PAGE_START);
        
        JTree tree = new JTree();
        
        add(tree, BorderLayout.LINE_START);
        
        
        JPanel unterePanel = new JPanel(new GridLayout(3,1));
        
        String liste[] = {"eins", "zwei", "drei"};
        JList myList = new JList(liste);
        unterePanel.add(myList);
        
        JPanel buttonPanel = new JPanel(new GridLayout(1,3));
        buttonPanel.add(new JButton("Button1"));
        buttonPanel.add(new JButton("Button2"));
        buttonPanel.add(new JButton("Button3"));
        
        unterePanel.add(buttonPanel);
        
        unterePanel.add(new JEditorPane());
        
        add(unterePanel, BorderLayout.CENTER);
    }
    
    public static void main(String[] args) {
        DritteAufgabeFrame frame = new DritteAufgabeFrame();
        frame.setVisible(true);
    }
 
}

danke euch für eure Hilfe
 
Meinst du nach der zeile 56 soll ich das eingeben?

Java:
buttonPanel.setPreferredSize(new Dimension(120,25));

leider hat es sich nichts geändert 🙁
 
hi, das macht nicht viel Sinn, da du den Button schon dem JPanel zuweisst, bevor du
im bestimmte Parameter zuweisst.

Besser so (ist auch übersichtlicher)

Java:
JButton button1 = new Button("Hallo");
....
button1.setPreferredSize(new Dimension(x-wert,y-wert);
panelButton.add(button1)
dann kannst du genau sehen, welcher Button welche Parameter enthält.

gruß nickname
 
Buttons sind zu dich, aber es sollten schmaler sein

Also ich nehme an, dass du uns mit diesem (etwas kryptischen ;-)) Satz sagen wolltest, dass die Buttons zu dick sind und deswegen schmaler sein sollten.

Das ist leider mit dem GridLayout nicht möglich. Eine Komponente nimmt innerhalb eines Grids immer die Grösse des Grids an, so dass du den Button in einem Grid nicht verkleinern kannst.

Das wäre allerdings mit dem GridBagLayout sehr gut möglich.
 
GridLayout: All components in the layout are given equal size.

->es nicht möglich nur eine dieser Komponenten zu verkleinern

du wirst wohl einen anderen layoutmanager nehmen müssen...
vllt hilft es dir ma deinen anderen Thread auch anzugucken: link
=> BoxLayout, GridBagLayout oder Drittanbieter-Layout....
 
Hier wäre der Code (wenn auch etwas chaotisch ^^) für das GridBagLayout:

[Java]
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.LayoutManager;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;


public class DritteAufgabeFrame extends JFrame{


public DritteAufgabeFrame(){
setTitle("Meine dritte Aufgabe");
setSize(500,600);
setLocationByPlatform(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

setLayout(new BorderLayout());
JPanel oberePanel = new JPanel(new GridLayout(1,3));
oberePanel.add(new JTextField());


String listData[] = {"Apfel", "Birne", "orange"};
JComboBox comboBox = new JComboBox(listData);
oberePanel.add(comboBox);

oberePanel.add(new JButton("Button1"));

add(oberePanel, BorderLayout.PAGE_START);

JTree tree = new JTree();

add(tree, BorderLayout.LINE_START);


JPanel unterePanel = new JPanel(new GridLayout(3,1));

String liste[] = {"eins", "zwei", "drei"};
JList myList = new JList(liste);
unterePanel.add(myList);

GridBagLayout gbl = new GridBagLayout(); //GridBagLayout-Objekt wird erzeugt
GridBagConstraints gbc = new GridBagConstraints(); // GridBagConstraints-Objekt wird erzeugt

JPanel buttonPanel = new JPanel( gbl );

gbc = createGBC(0, 0, 1, 1); // layout wird angepasst
JButton button1 = new JButton("Button 1"); // button wird erzeugt
gbl.setConstraints(button1, gbc); // das layout wird gesetzt

gbc = createGBC(1, 0, 1, 1);
JButton button2 = new JButton("Button 2");
gbl.setConstraints(button2, gbc);

gbc = createGBC(2, 0, 1, 1);
JButton button3 = new JButton("Button 3");
gbl.setConstraints(button3, gbc);

// buttons werden hinzugefügt
buttonPanel.add(button1);
buttonPanel.add(button2);
buttonPanel.add(button3);

unterePanel.add(buttonPanel);

unterePanel.add(new JEditorPane());

add(unterePanel, BorderLayout.CENTER);
}

// Methode, die das erstellen des GridBagConstraints erleichtert
private GridBagConstraints createGBC(int x, int y, int width, int height){
GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets(5, 5, 5, 5);

return gbc;
}

public static void main(String[] args) {
DritteAufgabeFrame frame = new DritteAufgabeFrame();
frame.setVisible(true);
}

}
[/Java]

*Edit
Du solltest jetzt mit den Methoden
- setMinimumSize( new Dimension ( int width, int height ) )
- setPreferredSize( new Dimension( int width, int height ) )
die Grösse der Buttons manuell verändern können.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben