JPanel Inhalt anpassen

ChristianEG

Mitglied
Hallo,

ich baue zurzeit eine GUI. Ich passe zurzeit den Inhalt etwas an und versuche das ganze etwas ansehlicher anzuordnen. Ich stehe nun vor einem Problem. Ich bekomme die Buttons im JPanel nicht richtig angeordnet.

Hier mal mein Code:

Klasse SGFrame
Java:
package sortguipckg;

import java.awt.*;

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

public class SGFrame extends JFrame {

    private static final long serialVersionUID = 1L;
    JPanel oben = new JPanel();
    JPanel unten = new JPanel();
    JPanel unten2 = new JPanel();
    Border loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
    TitledBorder titel;
    
   /* public class MyInnerClassActionListener implements ActionListener {
	public void actionPerformed(ActionEvent e) {
	    if("BubbleButton".equals(e.getActionCommand())) {
		unten2.removeAll();
		SGBubbleSort bubble = new SGBubbleSort(unten2);
		pack();
	    }
	    if("InsertionButton".equals(e.getActionCommand())) {
		unten2.removeAll();
		SGInsertionSort insertion = new SGInsertionSort(unten2);
		pack();
	    }
	    if("SelectionButton".equals(e.getActionCommand())) {
		unten2.removeAll();
		SGSelectionSort insertion = new SGSelectionSort(unten2);
		pack();
	    }
	}
    }*/
    
    public SGFrame() {
	super("SortGUI v1.0  (C)opyrigth Christian Lang");
	setSize(1024, 768);
	Container MainContainer = getContentPane();
	
	BorderLayout BorderLayoutMain = new BorderLayout();
	//BorderLayout bl = new BorderLayout();
	MainContainer.setLayout(BorderLayoutMain);

	GridLayout GridLayoutOben = new GridLayout(0,6);
	oben.setLayout(GridLayoutOben);
	titel = BorderFactory.createTitledBorder("Sortieralgorithmen");
	oben.setBorder(titel);
	
	GridLayout GridLayoutUnten = new GridLayout(0,10);
	unten2.setLayout(GridLayoutUnten);
	unten2.setBackground(Color.red);
	
	SGButtons BubbleButton = new SGButtons("BubbleSort", this);
	//BubbleButton.addActionListener(new MyInnerClassActionListener());
	BubbleButton.setActionCommand("BubbleButton");
	
	SGButtons InsertionButton = new SGButtons("InsertionSort", this);
	//InsertionButton.addActionListener(new MyInnerClassActionListener());
	InsertionButton.setActionCommand("InsertionButton");
	
	SGButtons SelectionButton = new SGButtons("SelectionSort", this);
	//SelectionButton.addActionListener(new MyInnerClassActionListener());
	SelectionButton.setActionCommand("SelectionButton");
	
	//add(new JSeparator(SwingConstants.HORIZONTAL));
	
	add(oben, BorderLayout.PAGE_START);
	oben.add(BubbleButton);
	oben.add(InsertionButton);
	oben.add(SelectionButton);
	add(unten2, BorderLayout.AFTER_LINE_ENDS);

	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setVisible(true);
    }

 }

Klasse SGBubbleSort:
Java:
package sortguipckg;

import javax.swing.JPanel;

public class SGBubbleSort {

    private int AnzahlZahlen = 10;
    private int zahlen[] = new int[AnzahlZahlen];
    private int Sortszahlen[] = new int[zahlen.length];
    private int Buffer1;
    private int Buffer2;
    private int match = 0;
    private int counter = 0;
    private SGFrame myframe;

    public SGBubbleSort(JPanel name, SGFrame frame) {
	myframe = frame;
	for (int i = 0; i < AnzahlZahlen; i++) {
	    zahlen[i] = (int) ((Math.random()) * (zahlen.length));
	}
	for (int i = 0; i < AnzahlZahlen; i++) {
	    Sortszahlen[i] = zahlen[i];
	}
	java.util.Arrays.sort(Sortszahlen);

	do {
	    for (int i = 0; i < zahlen.length - 1; i++) {
		if (zahlen[i] > zahlen[i + 1]) {
		    Buffer1 = zahlen[i];
		    Buffer2 = zahlen[i + 1];
		    zahlen[i] = Buffer2;
		    zahlen[i + 1] = Buffer1;
		}
	    }
	    System.out.println(java.util.Arrays.toString(zahlen));
	    addButtons(zahlen, name);

	    for (int i = 0; i < AnzahlZahlen; i++) {
		if (zahlen[i] == Sortszahlen[i]) {
		    match = match + 1;
		}
	    }
	    if (match < AnzahlZahlen) {
		match = 0;
	    }
	} while (match < AnzahlZahlen);
    }

    private void addButtons(int[] zufallszahlen2, JPanel name) { 
	for(int i = 0; i<zahlen.length; i++) {
	    SGButtons ButtonY = new SGButtons(zahlen[i] + "", myframe);
	    name.add(ButtonY);
	    name.revalidate();
	}
    }
}

Klasse SGInsertionSort:
Java:
package sortguipckg;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SGInsertionSort {
    
    private int AnzahlZahlen = 10;
    private int[] zahlen = new int[AnzahlZahlen];
    private int i, j, v, k;
    private SGFrame myframe;

   public SGInsertionSort(JPanel name, SGFrame frame) {
       	myframe = frame;
       
	for (int m = 1; m < zahlen.length ; m++) {
	    zahlen[m] = (int)(10*Math.random());
	}
		
	System.out.println("first" + java.util.Arrays.toString(zahlen));
	addButtons(zahlen, name);

	for (i = 2; i < zahlen.length; i++) {
	    v = zahlen[i];
	    j = i;
	
	    while (zahlen[j-1] > v) {
		zahlen[j] = zahlen[j-1];
		j--;
		zahlen[j] = v;
		System.out.println(java.util.Arrays.toString(zahlen));
		addButtons(zahlen, name);
	    }	
	}

	System.out.println("final" + java.util.Arrays.toString(zahlen));
	addButtons(zahlen, name);
    }

   private void addButtons(int[] zahlen2, JPanel name) {
       for(int i = 0; i<zahlen.length; i++) {
	   SGButtons ButtonZ = new SGButtons(zahlen[i] + "", myframe);
	   name.add(ButtonZ);
	   name.revalidate();   
       }
   }
}

Klasse SGSelectionSort:
Java:
package sortguipckg;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SGSelectionSort {
    
    private int AnzahlZahlen = 10;
    private int[] zahlen = new int[AnzahlZahlen];
    private int i, j, min, temp, k;
    private SGFrame myframe;
    
    public SGSelectionSort(JPanel name, SGFrame frame) {
	
	myframe = frame;
	
	for (int m = 1; m < zahlen.length ; m++) {
	    zahlen[m] = (int)(10*Math.random());
	}
	
	for(int i=0;i<zahlen.length-1;i++){
	    int min=i;
	    for (int j=i+1;j<zahlen.length;j++){
		if(zahlen[j]<zahlen[min]){
		    min=j;
		    System.out.println(java.util.Arrays.toString(zahlen));
		    addButtons(zahlen, name);
		}
		int temp=zahlen[min];
		zahlen[min]=zahlen[i];
		zahlen[i]=temp;
	    }
	}
	System.out.println("FINAL " + java.util.Arrays.toString(zahlen));
	addButtons(zahlen, name);
    }

    private void addButtons(int[] zahlen2, JPanel name) {
	for(int i = 0; i<zahlen.length; i++) {
	    SGButtons ButtonX = new SGButtons(zahlen[i] + "", myframe);
	    name.add(ButtonX);
	    name.revalidate();   
	}
    }
}

Klasse SGButtons:
Java:
package sortguipckg;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;


@SuppressWarnings("serial")
public class SGButtons extends JButton {
    private SGFrame myframe;
    
    public class MyInnerClassActionListener implements ActionListener {
	public void actionPerformed(ActionEvent e) {
	    if("BubbleButton".equals(e.getActionCommand())) {
		myframe.unten2.removeAll();
		SGBubbleSort bubble = new SGBubbleSort(myframe.unten2, myframe);
		
		//myframe.pack();
	    }
	    if("InsertionButton".equals(e.getActionCommand())) {
		myframe.unten2.removeAll();
		SGInsertionSort insertion = new SGInsertionSort(myframe.unten2, myframe);
		//myframe.pack();
	    }
	    if("SelectionButton".equals(e.getActionCommand())) {
		myframe.unten2.removeAll();
		SGSelectionSort insertion = new SGSelectionSort(myframe.unten2, myframe);
		//myframe.pack();
	    }
	}
}
  
    SGButtons(String text, SGFrame frame) {
	super(text);
	setPreferredSize(new Dimension(100,25));
	this.setMaximumSize(getPreferredSize());
	addActionListener(new MyInnerClassActionListener());
	myframe = frame;
    }
}

Klasse SGMain:
Java:
package sortguipckg;

public class SGMain {

    public static void main(String[] args) {
	SGFrame sgf = new SGFrame();
    }
}

Mein Hauptproblem besteht im JPanel unten2. Wenn ich durch Drücken auf einen Button wie z.B. BubbleSort klicke werden die Buttons (egal wieviele) so angezeigt das diese den kompletten JPanel füllen. Wenn ich die Position von unten2 auf (....., BorderLayout.South) ändere werden die Buttons schön von unten nach oben Original Größe, ohne diese über das ganze Panel zu maximieren, angezeigt. Genau so möchte ich das, nur von oben angefangen! Ich bekomms aber nicht hin. Kann mir jemand helfen? Ist bestimmt was ganz einfaches :)

Grüße,

Christian
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    20,4 KB · Aufrufe: 52
Zuletzt bearbeitet:

Eldorado

Bekanntes Mitglied
Er benutzt ja einen Layout-Manager und versucht ja irgend ein Problem mit diesen zu Beschreiben. Könntest du das Problem bitte nochmal neu formulieren und nur den wichtigen Code posten, der auch was mit der Anordnung der Button zu tun hat.
mfg
Elodrado
 

Marco13

Top Contributor
Mein Link verlinkte auf einen ganz speziellen Beitrag, von dem ich glaube, dass er die Quintessenz dessen enthält, was die Lösung für das Problem sein könnte ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
$ Inhalt von JPanel als Grafik? Java Basics - Anfänger-Themen 2
G JPanel "verliert" Inhalt Java Basics - Anfänger-Themen 6
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
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
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
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
H JPanel in andere Klasse übergeben 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
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben