Gui Layout Frage

Kyle

Neues Mitglied
Hallo,

ich versuche gerade meine erste Gui in Java zu erstellen und tue es mir schwer mit den Layout Managern.
Ich habe eine JFrame mit einem Borderlayout und würde gerne auf der rechten Seite( East )
8 Elemente anzeigen jeweils ein Imageicon + zugehörigen JButtton
Also
Icon 1
Button 1
Icon 2
Button 2
Icon 3
Button 3
Icon 4
Button 4

Ich hätte genre das Icon in seiner größe und darunter eine kleine Funktionstaste.
Je nach Layout Manager wird der Platz gleich verteilt das heist Taste und Icon sind gleich groß, wobei
ich die Tasten gerne kleiner hätte.
Nach langen probieren hab ich das ganze mit dem Boxlayout hinbekommen, allerdings reicht dann der
Platz nur für 3 Kombinationen zur Darstellung.
Der Rest passt dann nicht auf den Bildschirm.
Meine Frage wäre kann man die Größe der Icons beinflussen, das sie weniger Platz wegnehmen?
Gibt es eine andere einfache Möglichkeit als das Box Layout um diese Anordnung zu erreichen?

Gruß

Kyle

Java:
public static JPanel East_panel_main_3()
  {   
	File pic = null;
	JButton fl = new JButton("Function 1");
	JButton SC = new JButton("Function 2");
	 
		String check = new String();
		 check = "c:" + "\\" + "c1.png";
	     pic = new File( check );
		 System.out.println(pic);

			try {
				bimg = ImageIO.read(pic);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

     		  

	   
	  JPanel Head_East = new JPanel();
 
	  Box box = Box.createVerticalBox();	    
 
	  // SET First
	       JLabel First_Image = new JLabel(new ImageIcon( bimg));
		   JPanel First_IM_Panel = new JPanel(new FlowLayout());
		   First_IM_Panel.add(First_Image);
		   box.add(First_IM_Panel);
	        
	       JPanel First_button = new JPanel(new FlowLayout());
	       First_button.add( new JButton(" Function 1"));
	      
	      box.add(First_button);


	       
	       JLabel First_Image_sec = new JLabel(new ImageIcon( bimg));
		   JPanel First_IM_Panel_sec = new JPanel(new FlowLayout());
		   First_IM_Panel_sec.add(First_Image_sec);
	    
	     box.add(First_IM_Panel_sec);
	 
	       
	       JPanel First_button_sec = new JPanel(new FlowLayout());
	       First_button_sec.add( new JButton(" Function 2"));
	       
	       box.add(First_button_sec);
			  
	 
		 
	  //*****************************************************************	      
		  JLabel First_Image3 = new JLabel(new ImageIcon( bimg));
		   JPanel First_IM_Panel3 = new JPanel(new FlowLayout());
		   First_IM_Panel3.add(First_Image3);
	              box.add(First_IM_Panel3);
	  	        
	              JPanel First_button3 = new JPanel(new FlowLayout());
	              First_button3.add( new JButton(" Function 3"));
	             box.add(First_button3);
          
	   	       
	      
	
	      	       JLabel First_Image4 = new JLabel(new ImageIcon( bimg));
		   JPanel First_IM_Panel_4 = new JPanel(new FlowLayout());
	               First_IM_Panel_4.add(First_Image4);
             	  box.add(First_IM_Panel_4);
		 JPanel First_button_4 = new JPanel(new FlowLayout());
               	       First_button_4.add( new JButton(" Function 4"));
	     	      box.add(First_button_4);
	  Head_East.add(box);
		  
	    
	  return Head_East;
	  
  }
 

GUI-Programmer

Top Contributor
Anstatt das JLabel mit ImageIcon einem JPanel zu adden, wäre es vielleicht sinnvoller es direkt in dem JPanel zu zeichnen:
Java:
//...

private JPanel imagePanel(final Image image) {
    JPanel panel = new JPanel() {
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(image, 0, 0, this);
        }
    };
    panel.setPreferredSize(new Dimension(image.getWidth(null), image.getHeight(null)));
    return panel;
}

//...

box.add(imagePanel(bimg));

//...
 

jgh

Top Contributor
hier mal ein Bsp wie man das machen könnte. GridLayout bietet sich für eine feste Anzahl imho gut an:

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

@SuppressWarnings("serial")
public class GUITest extends JFrame {

	public GUITest() {
		setSize(500, 500);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		addEastPanel();
	}

	private void addEastPanel() {
		JPanel east = new JPanel(new GridLayout(8, 1));
		for (int i = 0; i < 8; i++) {
			if (i % 2 == 0) {
				JButton b = new JButton("Button");
				JPanel p = new JPanel();
				p.add(b);
				east.add(p);
			} else {
				ImageIcon ii = new ImageIcon();
				try {//imageIcon ist natürlich irgendwie doppeltgemoppelt...
					ii.setImage(new ImageIcon(
							new URL(
									"http://www.bayerischer-wald-ferien.de/assets/images/donaudurchbruch-weltenburger-enge-bilder-kelheim.jpg"))
							.getImage());

					JLabel l = new JLabel(ii);
					l.setPreferredSize(new Dimension(50, 50));
					east.add(l);
				} catch (MalformedURLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		add(east, BorderLayout.EAST);
	}

	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					UIManager
							.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				new GUITest().setVisible(true);
			}
		});
	}
}
 
Zuletzt bearbeitet:

turtle

Top Contributor
Du weisst aber schon, dass in einem JButton Text UND Bild zusammen angezeigt werden kann?

Java:
JButton btn1 = new JButton(" Function 1", createImageIcon("/images/turtle.jpg"));

Weiterhin solltest Du beachten, dass Klassen mit eine Grossbuchstaben, Felder und Methoden mit einem Kleinbuchstaben beginnen sollten.
 

hdi

Top Contributor
Ich hätte genre das Icon in seiner größe und darunter eine kleine Funktionstaste.
hier mal ein Bsp wie man das machen könnte. GridLayout bietet sich für eine feste Anzahl imho gut an:
Das Problem ist aber, dass das GridLayout alle Komponenten auf die selbe Größe resized. Sieht man ja auch in deiner Demo. Ich find das eignet sich hier aus diesem Grund nicht so.
 
Zuletzt bearbeitet:

jgh

Top Contributor
Das Problem ist aber, dass das GridLayout alle Komponenten auf die selbe Größe resized. Sieht man ja auch in deiner Demo. Ich find das eignet sich hier aus diesem Grund nicht so.

na ja, das Bild kann mit der Methode setPreferredSize(Dimension d) entsprechend den Wünschen geändert werden, der Button wird dank eines weiteren JPanels mit FlowLayout auch in seiner default-Größe angezeigt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
T Blöde Layout-Frage AWT, Swing, JavaFX & SWT 7
S Frage zu Layout AWT, Swing, JavaFX & SWT 2
M GUI Layout frage AWT, Swing, JavaFX & SWT 2
G Layout Frage AWT, Swing, JavaFX & SWT 13
F Frage zum Layout AWT, Swing, JavaFX & SWT 2
K Layout-Frage: 3 Feste Tabellen, 6-10dynamische AWT, Swing, JavaFX & SWT 2
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben