Größe eines JButton?

Status
Nicht offen für weitere Antworten.

Puthy

Mitglied
Hi,

ich sitze gerade am Buch "java ist auch eine insel" und habe mir eine Gui gebastelt bei der unter anderem ein LAbel und ein Button (mit icon) zu sehen soll. Allerdings bekomm ich es gerade nicht hin die Größe des Button anzugeben. Kann evtl wer helfen?

Code:
import java.awt.*;
import javax.swing.*;


public class GUI extends JFrame{

	public GUI(int x, int y){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(x, y);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((d.width-getSize().width)/2,
				(d.height-getSize().height)/2);
		
	}
	
	public static void main(String[] args){
		/*********CREATE WINDOW*****************************/
		JFrame jFrame = new GUI(200,100);
		jFrame.setTitle("Wir sind wir");
		
		/*********LABEL FOR TEXTFIELD***********************/
		JLabel label = new JLabel("Nachricht: ");
		label.setForeground(Color.RED);
		jFrame.add(label);
		
		/*********BUTTON WITH ICON TO SEND MESSAGE**********/
		Icon iconSendMessage = new ImageIcon("/home/christian/workspace/Uebung/send_message.png");
		JButton buttonSendMessage = new JButton();
		buttonSendMessage.setIcon(iconSendMessage);
		buttonSendMessage.setPreferredSize(new Dimension(50,10));
		jFrame.add(buttonSendMessage);
		
		
		
		
		//jFrame.pack();
		jFrame.setVisible(true);
	}
	
}
 
S

SlaterB

Gast
ein JFrame bzw. dessen ContentPane verwendet standardmäßig BorderLayout,
da bist du mit Größenangaben auf verlorenen Posten,

du brauchst zwingend ein anderes Layout, sei es für das ContentPane selber oder für einen Zwischen-JPanel,
welches dann in das ContentPane eingefügt wird

-----

so wie du es bisher gebaut hast, ist das JLabel übrigens gleich wieder weg,
ein BorderLayout hat nur wenig Platz


Laying Out Components Within a Container
http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

bzw. in der Insel
15.10 Alles Auslegungssache: die Layoutmanager
http://openbook.galileocomputing.de/javainsel7/javainsel_15_010.htm
 

0x7F800000

Top Contributor
naja, preferredSize ist so eine Sache... Das ist so eine Art hinweiß für den LayoutManager, den kann er beachten, oder (meistens) ignorieren. Es ist eigentlich nicht deine aufgabe, größe der Componenten anzugeben, du bist eher dafür zuständig, einen haufen Regeln festzulegen, nach den der layoutManager funktionieren soll.
Blättere lieber gleich ein paar seiten weiter bis zu den ganzen layout-managern, da wird's geklärt. Und halt dich nicht zu lange beim GridBagLayout auf, der ist imho absolut antiintuitiv, unberechnebar und gemeingefährlich. Benutze lieber gleich die forumsuche, um nach alternativen layoutmanagern zu suchen, TableLayout etwa, oder wie die da sonst noch heißen.
Für kleine Beispiele kannst du auch den null-layout nehmen, und direkt explizit mit setBounds(); die komponente brutal dort festtackern, wo du die haben willst. Feine methode ist das nicht, aber bei beispielprogrammen ganz gut anwendbar ;)
 

L-ectron-X

Gesperrter Benutzer
Das NullLayout zu empfehlen ist genauso unsinnig, wie die Aussage, dass das GridBagLayout "absolut antiintuitiv, unberechenbar und gemeingefährlich" sei.
 

Landei

Top Contributor
GridBagLayout ist und bleibt ein Krampf. Auch wenn einige Leute damit zu leben scheinen können, sind die genannten Alternativen wesentlich komfortabler und vor allem intuitiver. Bezüglich null-Layout stimme ich dir zu, sollte man sich gar nicht erst angewöhnen.
 
S

SlaterB

Gast
und das noch in einem Absatz mit 'eigentlich nicht deine aufgabe, größe der Componenten anzugeben, du bist eher dafür zuständig, einen haufen Regeln festzulegen, nach den der layoutManager funktionieren soll', ganz schön widersprüchlich ;)
 

0x7F800000

Top Contributor
L-ectron-X hat gesagt.:
Das NullLayout zu empfehlen ist genauso unsinnig, wie die Aussage, dass das GridBagLayout "absolut antiintuitiv, unberechenbar und gemeingefährlich" sei.
jaaaa, gut, dann hat diese tolle Erfindung anscheinend auch eine fangemeinde^^ ;) Das was ich hier schreibe ist ja auch nicht die absolute Wahrheit, sondern nur meine bescheidene Meinung, aber wenn ich hier nach jedem Satz "imho" und "afaik" schreibe, dann denken die Leute, dass ich zuviel "rofl" rauche und kiloweise "lols" zum frühstück esse ;)

und das noch in einem Absatz mit 'eigentlich nicht deine aufgabe, größe der Componenten anzugeben, du bist eher dafür zuständig, einen haufen Regeln festzulegen, nach den der layoutManager funktionieren soll', ganz schön widersprüchlich.
ich hab ja auch gesagt: bei kleinen testprogrammen. Wenn ich nichts anderes will, als ein programm, das mir nur ein Rechteck zeichnet, wo ich nur paar mal mit der maus drüberfahren will, um verschiedene mouse-listener auszuprobieren, dann ist es doch wesentlich angebrachter, null-layout zu nehmen, und das rechteck "per hand" in irgendeine ecke zu schieben, in der man's haben will. Wenn das Programm eh zum wegschmei0en ist, dann habe ich da kein Problem damit, die 10 Zeilen für die initialisierung von irgendeinem layout wegzulassen.
 
S

SlaterB

Gast
'imho' würde da nix ändern, es ist deine persönliche Meinung, deine Einschätzung, die hier angegriffen wird ;)
 

0x7F800000

Top Contributor
naja, meine arme unterdrückte Meinung ;) müsstet ihr schon mit größeren geschützen angreifen :) , wenn ihr meint, dass GridBagLayout so schön und einfach ist, dann bastelt mal aus farbigen jpanels folgendes zusammen:
Piet_Mondrian_Tableau_11_1921-25.jpg

dann glaub ich euch^^ :lol:
 

0x7F800000

Top Contributor
:shock: :shock: :shock:

lass mal raten, du hast 50 bunte fenster erzeugt, jedem ein GridBaglayout zugewiesen, und die dann mit der Maus zurechtgezogen? ;) Nett^^ :lol:
 

L-ectron-X

Gesperrter Benutzer
Andrey hat gesagt.:
wenn ihr meint, dass GridBagLayout so schön und einfach ist, dann bastelt mal aus farbigen jpanels folgendes zusammen:
Niemand hat gesagt, dass es einfach ist, es hat auch seine Tücken. Trotzdem ist er einer der mächtigsten LayoutManager. Man muss sich schon damit etwas beschäftigen, um den zu beherrschen.
Ich kann dir so ein Bild per auch mit GridBagLayout basteln, wenn du mir den Code mit einem alternativen LM postest. ;)
 

Ebenius

Top Contributor
Ist das genau genug? GridBagLayout loves you! (JNLP) / JAR mit Source drinnen

Code:
/* $Id$ */

/*
 * This file is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */

package com.ebenius;

import java.awt.*;

import javax.swing.*;

/**
 * Proving {@link GridBagLayout grid bag layout} power.
 * 
 * @version $Revision$ as of $Date$
 * @author Ebenius
 * @since Playground-3.8
 */
public class GridBagLayoutFun {

  /**
   * Test main method.
   * 
   * @param args ignored
   */
  public static void main(String[] args) {
    final JPanel contentPane = new JPanel(new GridBagLayout());
    final GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;

    gbc.gridx = gbc.gridy = 0;
    gbc.weightx = gbc.weighty = 0;
    final JComponent rootFiller = new JPanel();
    rootFiller.setOpaque(false);
    rootFiller.setMinimumSize(new Dimension(0, 0));
    rootFiller.setPreferredSize(new Dimension(0, 0));
    rootFiller.setMaximumSize(new Dimension(0, 0));

    gbc.gridx = 0;
    gbc.weightx = 0;
    gbc.weighty = 1;
    addHeightConditioner(contentPane, gbc, 30, 1);
    addHeightConditioner(contentPane, gbc, 30, 2);
    addHeightConditioner(contentPane, gbc, 50, 3);
    addHeightConditioner(contentPane, gbc, 50, 4);
    addHeightConditioner(contentPane, gbc, 20, 5);
    addHeightConditioner(contentPane, gbc, 50, 6);
    addHeightConditioner(contentPane, gbc, 50, 7);
    addHeightConditioner(contentPane, gbc, 50, 8);

    gbc.gridy = 0;
    gbc.weightx = 1;
    gbc.weighty = 0;
    addWidthConditioner(contentPane, gbc, 70, 1);
    addWidthConditioner(contentPane, gbc, 70, 2);
    addWidthConditioner(contentPane, gbc, 70, 3);
    addWidthConditioner(contentPane, gbc, 70, 4);
    addWidthConditioner(contentPane, gbc, 30, 5);

    gbc.insets.left = gbc.insets.right = 3;
    gbc.insets.top = gbc.insets.bottom = 3;
    gbc.weightx = gbc.weighty = 1;

    addColorPanel(contentPane, Color.RED, gbc, 1, 1, 1, 2);
    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 2, 1, 1, 2);
    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 3, 1, 3, 1);

    addColorPanel(contentPane, Color.YELLOW, gbc, 3, 2, 3, 2);

    addColorPanel(contentPane, Color.BLUE, gbc, 1, 3, 1, 2);
    addColorPanel(contentPane, Color.BLACK, gbc, 2, 3, 1, 2);

    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 3, 4, 2, 1);
    addColorPanel(contentPane, Color.BLACK, gbc, 5, 4, 1, 3);

    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 1, 5, 1, 1);
    addColorPanel(contentPane, Color.RED, gbc, 2, 5, 1, 2);
    addColorPanel(contentPane, Color.RED, gbc, 3, 5, 2, 2);

    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 1, 6, 1, 2);

    addColorPanel(contentPane, Color.BLUE, gbc, 2, 7, 2, 1);
    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 4, 7, 1, 1);
    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 5, 7, 1, 1);

    addColorPanel(contentPane, Color.YELLOW, gbc, 1, 8, 3, 1);
    addColorPanel(contentPane, Color.GREEN.brighter(), gbc, 4, 8, 2, 1);

    final JFrame f = new JFrame("GridBagLayout loves you!");
    f.setContentPane(contentPane);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }

  private static void addWidthConditioner(
        final JPanel contentPane,
        final GridBagConstraints gbc,
        int width,
        int x) {
    gbc.gridx = x;
    final JPanel panel = new JPanel();
    panel.setOpaque(false);
    panel.setMinimumSize(new Dimension(width, 0));
    panel.setPreferredSize(new Dimension(width, 0));
    contentPane.add(panel, gbc);
  }

  private static void addHeightConditioner(
        final JPanel contentPane,
        final GridBagConstraints gbc,
        int height,
        int y) {
    gbc.gridy = y;
    final JPanel panel = new JPanel();
    panel.setOpaque(false);
    panel.setMinimumSize(new Dimension(0, height));
    panel.setPreferredSize(new Dimension(0, height));
    contentPane.add(panel, gbc);
  }

  private static void addColorPanel(
        Container parent,
        Color bg,
        GridBagConstraints gbc,
        int x,
        int y,
        int gridWidth,
        int gridHeight) {
    gbc.gridx = x;
    gbc.gridy = y;
    gbc.gridwidth = gridWidth;
    gbc.gridheight = gridHeight;

    final JPanel panel = new JPanel();
    panel.setBackground(bg);
    parent.add(panel, gbc);
  }
}

Wieso stimmt eigentlich der MIME-Type des JAR / JNLP nicht? Grmbl! ???:L

Happy Hacking, Ebenius
 

0x7F800000

Top Contributor
omfg :lol:
wenn das einer sogar um 5 Uhr morgens kann, dann muss an GridBagLayout doch was dran sein^^ :D gut gut gut, überredet, ihr hört von mir nie weider ein Wort bzgl GridBagLayout :oops:
 

L-ectron-X

Gesperrter Benutzer
Mit leeren Elementen ist das auch kein Problem. Richtig irre kann man aber werden, wenn man bspw. externe Daten ins Programm holt und die dann in Textfeldern oder Labels anzeigen will, die in einem GBL sitzen.
Ich glaub spätestens dann kommt man nicht mehr ums verschachteln drum herum.
Und wenn man die Größe eines Fensters zieht, kann es passieren, dass sich Komponenten so ausrichten, wie man es eigentlich nicht haben will.
 

Ebenius

Top Contributor
L-ectron-X, da hast Du natürlich recht. Man muss halt wissen was man braucht. Ich hab inzwischen bestimmt 25 Layout-Implementierungen selber geschrieben wegen genau der von Dir beschriebenen Probleme. Aber das heißt noch lange nicht, dass GBL nicht kann was es soll. :-D

Grüße aus Dresden, Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
D Größe der Zahlenkombinationen eines Arrays begrenzen Java Basics - Anfänger-Themen 0
H Erste Schritte Größe eines 2 dimensionalen Arrays ausgeben Java Basics - Anfänger-Themen 6
M Größe eines Buttons festlegen Java Basics - Anfänger-Themen 4
A Datentypen Größe eines mehrdimensionales Arrays Java Basics - Anfänger-Themen 4
Luk10 Größe eines Arrays ausgeben Java Basics - Anfänger-Themen 4
G die Größe eines Button bestimmen ? Java Basics - Anfänger-Themen 4
Dilandau größe eines string arrays? Java Basics - Anfänger-Themen 3
C Probleme bei Ermitteln der Größe eines Components Java Basics - Anfänger-Themen 5
G Größe eines TextField bestimmen Java Basics - Anfänger-Themen 4
T Größe eines Objektes im Speicher Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
M Seltsame Bytecode-Größe Java Basics - Anfänger-Themen 22
J JScrollePane größe anpassen Java Basics - Anfänger-Themen 4
G Bubblesort Array der Größe 10 Java Basics - Anfänger-Themen 1
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
T JLabel hat falsche größe Java Basics - Anfänger-Themen 1
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
E Array-Größe anpassen Java Basics - Anfänger-Themen 1
Z ArrayList direkt feste Größe mitgeben Java Basics - Anfänger-Themen 13
R Verschachtelte Arraylist und deren Größe auslesen Java Basics - Anfänger-Themen 7
V Die die aktuelle Größe zusätzlich in einem Label angezeigt wird Java Basics - Anfänger-Themen 11
J Liste der Größe nach sortieren Java Basics - Anfänger-Themen 2
P Größe der BufferStrategy in der Window-Klasse Java Basics - Anfänger-Themen 5
S String nach Größe sortieren Java Basics - Anfänger-Themen 6
O Größe von Objekten Java Basics - Anfänger-Themen 5
M Feste Größe des JFrames - Problem mit Dimension Java Basics - Anfänger-Themen 6
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
1 Größe einer zirkulären Liste bestimmen .. ? Java Basics - Anfänger-Themen 2
S JSlider Schritt Größe Java Basics - Anfänger-Themen 5
D Ausgabefenster größe festlegen Java Basics - Anfänger-Themen 3
P JTabel größe ändern und button anzeigen Java Basics - Anfänger-Themen 5
L JLabel Icon Größe anpassen Java Basics - Anfänger-Themen 11
S Datentypen und ihre Größe Java Basics - Anfänger-Themen 21
P JFrame Component automatische Größe verhindern Java Basics - Anfänger-Themen 2
L 3 Zahlen einlesen und nach der Größe Sortieren Java Basics - Anfänger-Themen 5
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
W Methoden größe zweier tiere vergleichen Java Basics - Anfänger-Themen 15
B JTabbedPane größe der Tabs ändern Java Basics - Anfänger-Themen 6
M Größe einer Datei via. Link ermitteln Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld übernimmt Größe nicht Java Basics - Anfänger-Themen 11
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
A Größe von Bild festlegen Java Basics - Anfänger-Themen 3
E Buchstaben nach Größe vergleichen Java Basics - Anfänger-Themen 4
M OOP Methode überschreiben mit String-Paramter unterschiedlicher Größe? Java Basics - Anfänger-Themen 19
RySa Input/Output aktuelle größe des BufferedWriters ? Java Basics - Anfänger-Themen 5
T ArrayIndexOutOfBoundsException - Problem mit Array-Größe Java Basics - Anfänger-Themen 4
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
J Array Größe über Kommandozeile eingeben Java Basics - Anfänger-Themen 3
K GUI - Größe nicht änderbar Java Basics - Anfänger-Themen 7
B Tabelle, Größe der Komponenten Java Basics - Anfänger-Themen 2
Luk10 Größe von Objekten Java Basics - Anfänger-Themen 4
E Titel und Größe vom JFrame setzen Java Basics - Anfänger-Themen 6
A Bild ändert Größe des Gridbag Layouts Java Basics - Anfänger-Themen 4
M Größe einer Konsole ermitteln Java Basics - Anfänger-Themen 2
D Zylinder/Eigenschaften (auf Größe) vergleichen Java Basics - Anfänger-Themen 16
c_sidi90 Größe von Dateien aus File Array ermitteln Java Basics - Anfänger-Themen 12
N zweidimensionales array größe bestimmen Java Basics - Anfänger-Themen 1
I Schriftart / farbe / größe bei Emailversand ändern Java Basics - Anfänger-Themen 17
K Problem mit Applet Größe Java Basics - Anfänger-Themen 5
B JButton Größe einstellen? Java Basics - Anfänger-Themen 3
T Wie kann ich einem Graph in nem JPanel eine fixe Größe geben? Java Basics - Anfänger-Themen 6
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
M größe JEditorPane Java Basics - Anfänger-Themen 5
radiac Von einem Bild die Größe rausfinden??? Java Basics - Anfänger-Themen 9
J 2Dimensionales Array, Größe durch Eingabe bestimmen Java Basics - Anfänger-Themen 9
S Eclipse Java Applet größe ändern aber wie? Java Basics - Anfänger-Themen 5
M array - größe Java Basics - Anfänger-Themen 8
Z TextArea Größe festlegen Java Basics - Anfänger-Themen 22
K Größe, mehrdimensionales Array Java Basics - Anfänger-Themen 6
B ComboBox Größe ändern Java Basics - Anfänger-Themen 4
C die Klasse File - die größe der Datei anzeigen Java Basics - Anfänger-Themen 12
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
-horn- Array mit nicht fixer Größe möglich? Nachträgliches befüllen Java Basics - Anfänger-Themen 10
C Größe einer Referenz ? Java Basics - Anfänger-Themen 16
G JButton LookAndFeel - Größe ändern Java Basics - Anfänger-Themen 2
D File(jpeg) größe ändern und dann zu einen byte[] Java Basics - Anfänger-Themen 7
F InternalFrame, Anpassung der Größe Java Basics - Anfänger-Themen 10
F Größe von Grafik-Containern verschieben Java Basics - Anfänger-Themen 2
K globales array - größe im Konstruktor Java Basics - Anfänger-Themen 3
N Integer Array der Größe nach ordnen Java Basics - Anfänger-Themen 1
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
G Button Größe anpassen Java Basics - Anfänger-Themen 4
R textfeld größe definieren Java Basics - Anfänger-Themen 2
B Java Array List größe auslesen zur Suchfunktion Java Basics - Anfänger-Themen 5
K Strings der Größe nach ordnen Java Basics - Anfänger-Themen 5
S Auf JButtonBar komponenten ausrichten, größe festlegen? Java Basics - Anfänger-Themen 5
M größe für Applet definieren Java Basics - Anfänger-Themen 4
G JList größe verändert sich Java Basics - Anfänger-Themen 2
G max größe array Java Basics - Anfänger-Themen 10
G Größe von JFrame unveränderbar Java Basics - Anfänger-Themen 7
G Maximale Größe von klasse Java Basics - Anfänger-Themen 7
G Größe von Box festlegen Java Basics - Anfänger-Themen 7
N Größe von Buttons Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben