# Größe und Farbe vom JButton festlegen



## Scratchy (20. Sep 2014)

Hallo zusammen,

ich mache langsam aber stetig Fortschritte bei meiner Mathe-App. Nun habe ich zwei JButton hinzugefügt (einer der "Richtig" und einer der "Falsch" anzeigen soll). Ich möchte nun gerne doch die Größe und die Farbe der Buttons bestimmen. Irgendwie habe ich da gerade ein Denkfehler oder es klappt vlt. nicht wegen meinem LayoutManager ?

Hier ist der Ausschnitt:

```
JButton button1 = new JButton("Korrekt");
		button1.setSize(50, 40);
		button1.setBackground(Color.red);
		JButton button2 = new JButton("Falsch");
		button2.setBackground(new Color(222, 61, 3));
		p2.setAlignmentX(Component.CENTER_ALIGNMENT);
		p2.add(button1);
		p2.add(button2);
```

Hier seht ihr den gesamten Code (das ist mir etwas peinlich den zu zeigen ) :

```
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.util.Random;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Beta extends JFrame /*implements ActionListener*/{

	Random randomzahl;
	private JLabel labelfrage;
	private JLabel labelantwort;
	private JLabel label;
	private JLabel leer2;
	private JLabel leer3;
	private JLabel leer4;
	private JLabel leer5;
	private JLabel leer6;
	private JLabel leer7;
	private JLabel leer8;
	private int a;
	private int b;
	private int c;
	private int d;
	private JFrame f;
	private JPanel p1;
	private JPanel p2;
	private JButton button1;
	private JButton button2;
	
	public Beta(){
		System.out.println("Yes Sir");
		
		Fensterdeklaration();
	}
		
		
		
	


	public void Fensterdeklaration() {
		Font schriftart = new Font("Serif", Font.BOLD, 10);
		randomzahl = new Random();
		a = randomzahl.nextInt(4) + 1;
		b = randomzahl.nextInt(3) + 1;
		c = randomzahl.nextInt(2) + 4;
		d = a + b;
		f = new JFrame("Fenster von der Beta");
		p1 = new JPanel();
		p2 = new JPanel();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(400,500);
		Color color = new Color(randomzahl.nextInt(255), randomzahl.nextInt(255), randomzahl.nextInt(255));
		f.setBackground(color);
		p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));
		label = new JLabel("Mathe-App");
		label.setFont(new Font("Arial", Font.CENTER_BASELINE, 13));
		labelfrage = new JLabel(a + " " + "+" + " " + b + "    " + "=");
		labelfrage.setFont(new Font("Helvetica", Font.ITALIC, 83));
		labelfrage.setAlignmentX(Component.CENTER_ALIGNMENT);
		labelantwort = new JLabel("" + c);
		labelantwort.setAlignmentX(Component.CENTER_ALIGNMENT);
		labelantwort.setFont(new Font("Serif", Font.BOLD, 67));
		leer1 = new JLabel(" ");
		leer2 = new JLabel(" ");
		leer3 = new JLabel(" ");
		leer4 = new JLabel(" ");
		leer5 = new JLabel(" ");
		leer6 = new JLabel(" ");
		leer7 = new JLabel(" ");
		leer8 = new JLabel(" ");
		//leer.setAlignmentX(Component.CENTER_ALIGNMENT);
		System.out.println("A:  " + a);
		System.out.println("B:  " + b);
		System.out.println("C:  " + c);
		p1.add(label); // Leeres Label --> Leerzeile
		p1.add(leer2); // Leeres Label --> Leerzeile
		p1.add(leer3); // Leeres Label --> Leerzeile
		p1.add(leer4); // Leeres Label --> Leerzeile
		p1.add(leer5); // Leeres Label --> Leerzeile
		p1.add(leer6); // Leeres Label --> Leerzeile
		p1.add(labelfrage);
		p1.add(leer7); // Leeres Label --> Leerzeile
		p1.add(leer8); // Leeres Label --> Leerzeile
		p1.add(labelantwort);
		JButton button1 = new JButton("Korrekt");
		button1.setSize(50, 40);
		button1.setBackground(Color.red);
		JButton button2 = new JButton("Falsch");
		button2.setBackground(new Color(222, 61, 3));
		p2.setAlignmentX(Component.CENTER_ALIGNMENT);
		p2.add(button1);
		p2.add(button2);
		p1.add(p2);
		f.add(p1);
		f.setVisible(true);
		Check();
	}

	private void Check() {
		if(a+b==c){
			System.out.println("Trifft zu!");
		}if(a+b!=c){
			System.out.println("Trifft nicht zu!");
		}
		
	}






	public static void main(String[] args) {
		new Beta();
		

	}

	/*@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}*/

}
```

Danke für Eure Hilfe


----------



## Bug Fisher (21. Sep 2014)

Schau dir die nachfolgende einfache Klasse mal an, da siehst du, welche Schritte notwendig sind, um die Größe und Farbe eines JButtons zu verändern.
Wenn du es gut/richtig/schicker haben möchtest, solltest du bei selected, hover, pressed, enabled jeweils andere Inhalte zeichnen.


```
@SuppressWarnings("serial")
class ScratchyButton extends JButton {
	private Color color;

	public ScratchyButton(final String text, final Dimension size, final Color color) {
		super(text);
		setPreferredSize(size);
		setContentAreaFilled(false);
		this.color = color;
	}

	@Override
	protected void paintComponent(Graphics g) {
		g.setColor(color);
		g.fillRect(0, 0, getWidth(), getHeight());
		super.paintComponent(g);
	}

}
```


----------



## Scratchy (21. Sep 2014)

Danke für die Antwort. Ich hätte nicht gedacht, dass es so kompliziert sei. Leider wird bei mir Dimension als Fehler angezeigt ?

```
class Buttons extends JButton {
			private Color color;
			private Dimension d;
		 
			public Buttons(final String text, final Dimension size, final Color color) {
				super(text + "Korrekt");
				setPreferredSize(newDimension(40,50));
				setContentAreaFilled(false);
				this.color = color;
			}
		 
			@Override
			protected void paintComponent(Graphics g) {
				g.setColor(Color.green);
				g.fillRect(0, 0, getWidth(), getHeight());
				super.paintComponent(g);
			}
```


----------

