JButton Problem

cz3kit

Bekanntes Mitglied
Hallo, ich erstelle gerade ein Frame und da sollen 10x10 Buttons sein. Alle 100 Butons sollen als Spielffeld dienen. Dazu hab ich mir dann einfach eine neue Klasse erstellt die von JButton erbt und dann 3 Klassenvariablen erhält um diese leichter zu identifizieren. Dummer weise werden diese Buutons aber nicht angezeigt. Ahja, ich füge sie dem Frame in einer for-Schleife hinzu.
So sieht das aus:

Buton Klasse:
Java:
public class MeerButton extends JButton {
	/*
	 * Hier werden die Klassenvariablen deklariert. x soll die x-Koordiante
	 * des Buttons in einem Feld darstellen. y soll die y-Koordinate des
	 * Buttons in einem Feld darstellen. 
	 * Wenn es mehrere Felder geben sollte, kann man diesen eine Nummer
	 * zuteilen und diese Nummer dann auch dem Button uebergeben. Damit
	 * ist dann eindeutig in welchen Feld sich diese Komponente befindet.
	 */
	private int x;
	private int y;
	private int feld;
	
	
	/**
	 * Der Kostruktor der Klasse MeerButton. Sie nimmt drei Parameter auf,
	 * alle drei vom Typ int.
	 * @param x koennte fuer die x-Koordinate in einem Feld darstellten.
	 * @param y koennte fuer die y-Koordiante in einem Feld darstellen.
	 * @param feld konnte eine Feldnummer darstellen.
	 */
	public MeerButton(int x, int y, int feld) {
		this.x = x;
		this.y = y;
		this.feld = feld;
	}

und weiter kommen noch die Getter und Setter für diese Attribute.
Jetzt das Frame:
Java:
private void initGUI() {
		try {
			/*
			 * Diese Zeile dient dazu, dass das Programm auch beendet wird, 
			 * wenn man oben rechts auf das Kreuz klickt.
			 */
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				/*
				 * Ein JPanel wird zum Fenster hinzugefuegt. Zu dem Panel
				 * werden dann die ganzen Komponenten hinzugefuegt.
				 */
				jPanel = new JPanel();
				jPanel.setLayout(null);
				getContentPane().add(jPanel, BorderLayout.CENTER); {
					/*
					 * Die Buttons fuer das eigene Meer werden hinzugefuegt.
					 * Der erste Button befindet sich bei x = 7 und y = 28,
					 * da aber beim betreten der Schleife bereits zu der 
					 * y-Koordinate 35 dazuaddiert wird, muss y zu Beginn
					 * mit dem Wert -7 initialisiert werden. Es werden
					 * 35 dazuaddiert, weil die Buttons selbst 35x35 groß
					 * sind und zwischen den Komponenten keine sichtbaren
					 * Luecken vorhanden sein sollen.
					 * 
					 * Die Variablen xPosition und yPosition werden fuer die
					 * Platzierung der Buttons auf dem Panel benoetig. 
					 * Die Variablen xKoordiante und yKoordiante werden der 
					 * Klasse MeerButton uebergeben.
					 */
					int yKoordiante = -1;
					
					int xPosition = 7;
					int yPosition = -7;
					int size = 35;
					for (int i = 0; i < 10; i++) {
						int xKoordiante = 0;
						yPosition += 35;
						xPosition = 7;
						yKoordiante += 1;
						for (int j = 0; j < 10; j++) {
							JButton button = new MeerButton(xKoordiante,
                                                            yKoordiante, 0);
							JButton button = new JButton();
							jPanel.add(button);
							button.setBounds(xPosition, yPosition, size, size);
							xPosition += 35;
							xKoordiante += 1;
						}
					}}
            pack();
			this.setSize(780, 500);
 

cz3kit

Bekanntes Mitglied
Hmm leider ändert das nichts. Also super() steht jetzt auch bei MeerButton, aber leider zeigt er mir noch immer die Buttons nicht an, erst wenn ich mit der Maus über die Position rüber gehe, erscheinen diese.
 

cz3kit

Bekanntes Mitglied
Meinst du das mit invokeLater() ?
Wenn du das meinst, dann hab ich das drin.
Java:
public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				SchlachtFrame inst = new SchlachtFrame();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}

oder muss ich das mit jeden einzelnen Button machen?
 

Eldorado

Bekanntes Mitglied
Nein stimmt schon so, nur wenn du halt nachdem anzeigen noch was ändern willst, dann halt.
JButton button = new MeerButton(xKoordiante, yKoordiante, 0);
JButton button = new JButton();
Warum erzeugst du hier zwei Button, mit dem selben Namen? Wirft er dir da keine Exception?
 

cz3kit

Bekanntes Mitglied
oO Das war zum Testen ob das mit dem normalen JButton geht. Damit geht alles ohne Probleme, diese werden sofort angezeigt. Ich habe vergessen die eine Zeile auszukommentieren. ALso normale Buttons funktionieren, meine eigenen erscheinen erst wenn ich mit der Maus darüber gehe.
 

U2nt

Bekanntes Mitglied
Nein stimmt schon so, nur wenn du halt nachdem anzeigen noch was ändern willst, dann halt.

Warum erzeugst du hier zwei Button, mit dem selben Namen? Wirft er dir da keine Exception?

Er erzeugt nicht zwei, er überschreibt beim zweiten den ersten ;)
Ich denke mit nem
Code:
super()
im Konstruktor von MeerButton müsste es gehen. (Ich weis wurd schon gesagt... probiers aber nochmal)
 

cz3kit

Bekanntes Mitglied
Er erzeugt nicht zwei, er überschreibt beim zweiten den ersten ;)
Ich denke mit nem
Code:
super()
im Konstruktor von MeerButton müsste es gehen. (Ich weis wurd schon gesagt... probiers aber nochmal)

Ich habe nachgeschaut, die eine Zeile mit dem MeerButton ist auskommentiert, also überschreibe ich nichts :p

Das mit dem super() hab ich probiert, aber leider ändert das nichts. Irgendwie kann ich nicht nachvollziehen, warum die nicht angezeigt werden.
 

Eldorado

Bekanntes Mitglied
Also bei mir werden deine Button sofort angezeigt, es liegt also auf jeden Fall nicht an der Klasse MeerButton. Bei mir arbeite ich aber mit Layout-Managern --> vielleicht wäre das auch eine Option für dich(solltest du in Zukunft für deine guis auf jeden Fall lernen)
 

Eldorado

Bekanntes Mitglied
Java:
public class MeerButton extends JButton {
    /*
     * Hier werden die Klassenvariablen deklariert. x soll die x-Koordiante
     * des Buttons in einem Feld darstellen. y soll die y-Koordinate des
     * Buttons in einem Feld darstellen.
     * Wenn es mehrere Felder geben sollte, kann man diesen eine Nummer
     * zuteilen und diese Nummer dann auch dem Button uebergeben. Damit
     * ist dann eindeutig in welchen Feld sich diese Komponente befindet.
     */

    private int x;
    private int y;
    private int feld;

    /**
     * Der Kostruktor der Klasse MeerButton. Sie nimmt drei Parameter auf,
     * alle drei vom Typ int.
     * @param x koennte fuer die x-Koordinate in einem Feld darstellten.
     * @param y koennte fuer die y-Koordiante in einem Feld darstellen.
     * @param feld konnte eine Feldnummer darstellen.
     */
    public MeerButton(int x, int y, int feld) {
        super();
        this.x = x;
        this.y = y;
        this.feld = feld;
    }
}
 

cz3kit

Bekanntes Mitglied
Gut ich werde es gleich mal ausprobieren. Danke erstmal soweit. Ich meld mich dann ob es funktioniert hat oder nicht^^ Bin guter Hoffnung.
 

U2nt

Bekanntes Mitglied
Wenn du das Layout auf
Code:
null
setzt, musst du
Code:
setBounds()
(bzw.setLocationundsize) aufrufen!

z.B.
Java:
MeerButton mb = new MeerButton(1,2,3);
mb.setBounds(10, 10, 50, 50);

Trotzallerdem wär's mit nem FlowLayout leichter...
 

Eldorado

Bekanntes Mitglied
Er ruft ja die Methode setBounds() auf:
button.setBounds(xPosition, yPosition, size, size);
Das ist der MeerButton der in einer Variable mit dem Typ JButton gespeichert wurde(ist ja kein Problem). Den JButton, den er zusätzlich erstellt hat, hätte ja auskommentiert sein müssen, wie er oben gesagt hat.
 

cz3kit

Bekanntes Mitglied
Die setBounds() Methode rufe ich ja auf. In meinem ersten Post, zweoter Code, Zeile 46.
Der zweite JButton ist ja jetzt auch auskommentiert.
 

cz3kit

Bekanntes Mitglied
Hmm, also ich verwende ja das AbsoluteLayout und rufe dann auch noch die setBounds Methode auf, aber die Buttons wollen einfach nicht erscheinen. Irgendwie versteh ich das nicht.
 

Eldorado

Bekanntes Mitglied
Wenn du einen Layoutmanager benutzt brauchst du keine setBounds() Methode/darfst sie nicht benutzen. Das einzige was du an der Größe beeinflussen kannst ist mit der setPreferredSize();-Methode
 

cz3kit

Bekanntes Mitglied
Das verstehe ich jetzt gar nicht mehr. Selbst wenn ich FlowLayout nutze sehe ich die Buttons nicht. Ich sehe nur den ersten aber weitere sieht man nicht. -.-
 

cz3kit

Bekanntes Mitglied
Es ist kaum zu glauben, aber aufeinmal passt alles :shock: Und ich war einfach mal eben essen. Verstehen tu ich es nicht aber ich stell das mal rein. Sag mir mal bitte ob ihr dann zwei 10x10 Felder habt.
 

Anhänge

  • bin.zip
    3,1 KB · Aufrufe: 2
Ähnliche Java Themen
  Titel Forum Antworten Datum
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M Problem mit FlowLayout, JLabel und JButton AWT, Swing, JavaFX & SWT 4
B Schwer zu beschreibendes Problem mit JFrame oder JButton AWT, Swing, JavaFX & SWT 8
K JButton Problem beim Schriftfarbe Ändern AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
P Problem mit Darstellung von JButton(s) AWT, Swing, JavaFX & SWT 2
M JButton Action Problem AWT, Swing, JavaFX & SWT 3
W Swing Problem ( JPanel & JButton ) AWT, Swing, JavaFX & SWT 6
K Problem mit JButton in JTable AWT, Swing, JavaFX & SWT 4
R JButton in JList - MouseEvent-Problem AWT, Swing, JavaFX & SWT 12
U Problem mit JButton (Position & Größe) AWT, Swing, JavaFX & SWT 7
B ActionListener, Thread, JButton Problem AWT, Swing, JavaFX & SWT 2
J problem mit ListCellRenderer und in der zeile ein Jbutton AWT, Swing, JavaFX & SWT 5
TheJavaKid JButton problem AWT, Swing, JavaFX & SWT 9
A jbutton setEnable() problem AWT, Swing, JavaFX & SWT 3
T Problem mit MouseListener bei JButton AWT, Swing, JavaFX & SWT 5
L Problem mit ActionListener, ChildFrame und JButton AWT, Swing, JavaFX & SWT 3
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben