Swing Icon von Button

krgewb

Top Contributor
Ich habe eine Klasse erstellt, die von JButton erbt.
Das Problem ist nun: Das Icon eines Buttons wird erst angezeigt, wenn ich einmal mit der Maus über den Button gefahren bin.
 

JCODA

Top Contributor
Wie setzt du das Icon? Überschreibst du irgendwelche paint-Methoden ohne den super()-Aufruf? Wie lautet der Code?
 

krgewb

Top Contributor
Java:
import javax.swing.JButton;

public class MyButton extends JButton {

    private static final long serialVersionUID = 1L;
    private int y;
    private int x;

    public MyButton(String string) {
        super(string);
    }

    public MyButton() {
        super();
    }

}
 

krgewb

Top Contributor
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Spielfeld extends JPanel implements MouseListener {

    private static final long serialVersionUID = 1L;

    Hauptfenster haupt;
    private MyButton[][] buttons;
    private int size;

    public Spielfeld(Hauptfenster haupt) {
        this.haupt = haupt;

        size = 6;

        this.setLayout(new GridLayout(size, size));

        // Buttons erzeugen
        buttons = new MyButton[size][size];

        for (int y = 0; y < buttons.length; y++) {
            for (int x = 0; x < buttons[0].length; x++) {

                buttons[y][x] = new MyButton("");
                buttons[y][x].setPreferredSize(new Dimension(100, 100));
                buttons[y][x].setBackground(new Color(0, 100, 0));
                buttons[y][x].setFocusable(false);
                buttons[y][x].addMouseListener(this);
                this.add(buttons[y][x]);

                buttons[y][x].setX(x);
                buttons[y][x].setY(y);        
            }
        }

    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

}
 

krgewb

Top Contributor
Nach diesem Schema:
Java:
Bilder bilder = new Bilder();
b.setIcon(bilder.get_e_g_Nord());
 

krgewb

Top Contributor
Java:
import javax.swing.ImageIcon;

public class Bilder {

    private ImageIcon e_g_Nord;
    
    public Bilder( ) {

        // Der Pfad fuer die Grafiken wird zusammengebaut
        String trenner = System.getProperty("file.separator");

        String file = "bilder" + trenner;

        e_g_Nord = new ImageIcon(getClass().getResource(file + "e_g_Nord.png"));
     
    }

    public ImageIcon get_e_g_Nord() {
        return e_g_Nord;
    }

}
 

JCODA

Top Contributor
Andere Idee:
Zeigst du dein "Hauptfenster" bereits zuvor mit setVisible(true) an? Falls ja, ändere das mal so, dass setVisible(true) ganz am Ende, nach der Initialisierung des Spielfeldes steht.
 

krgewb

Top Contributor
Wenn ich die Zeile
Java:
b.setIcon(bilder.get_e_g_Nord());
In den Konstruktor von Spielfenster mache, funktioniert es auch nicht.

Ich entschuldige mich dafür, dass der Code so unübersichtlich ist. Der Code ist in Wirklichkeit viel länger. Ich habe vieles gelöscht, damit ihr mir leichter helfen könnt.
 

krgewb

Top Contributor
Anbei das Minimalbeispiel. Ich konnte jetzt herausfinden, dass es funktioniert, wenn ich die Methoden getY und getX lösche.
Java:
package de.hrw.gui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

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

public class Hauptprogramm {

    public static void main(String[] args) {
        @SuppressWarnings("unused")
        Hauptfenster hauptfenster = new Hauptfenster();
    }
}

class Bilder {

    private ImageIcon e_g_Nord;

    public Bilder(boolean developerMode) {

        // Der Pfad fuer die Grafiken wird zusammengebaut
        String trenner = System.getProperty("file.separator");

        String file = "bilder" + trenner;

        e_g_Nord = new ImageIcon(getClass().getResource(file + "e_g_Nord.png"));

    }

    public ImageIcon get_e_g_Nord() {
        return e_g_Nord;
    }

}

class MyButton extends JButton {

    private int y;
    private int x;

    public MyButton(String string) {
        super(string);
    }

    public MyButton() {
        super();
    }

    public int getY() {
        return y;
    }

    public int getX() {
        return x;
    }

}

class Hauptfenster extends JFrame {

    private static final long serialVersionUID = 1L;
    private Spielfeld spielfeld;

    public Hauptfenster() {

        this.setTitle("Uebung");
        this.setResizable(false);

        spielfeld = new Spielfeld(this);
        this.add(spielfeld);

        this.pack();

        // Position bestimmen
        this.setLocationRelativeTo(null);

        // Fenster schließen
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        this.setVisible(true);
    }

    public Spielfeld getSpielfeld() {
        return spielfeld;
    }

}

class Spielfeld extends JPanel implements MouseListener {

    private static final long serialVersionUID = 1L;

    Hauptfenster haupt;
    private MyButton[][] buttons;
    private Bilder bilder;
    private int size;

    public Spielfeld(Hauptfenster haupt) {
        this.haupt = haupt;

        size = 6;

        this.setLayout(new GridLayout(size, size));

        boolean developerMode = false;

        bilder = new Bilder(developerMode);

        // Buttons erzeugen
        buttons = new MyButton[size][size];

        for (int y = 0; y < buttons.length; y++) {
            for (int x = 0; x < buttons[0].length; x++) {

                buttons[y][x] = new MyButton("");
                buttons[y][x].setPreferredSize(new Dimension(100, 100));
                buttons[y][x].setBackground(new Color(0, 100, 0));
                buttons[y][x].addMouseListener(this);
                buttons[y][x].setIcon(bilder.get_e_g_Nord());
                this.add(buttons[y][x]);
            }
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Windowbuilder - Icon für Button einbinden AWT, Swing, JavaFX & SWT 2
J Icon vor Button AWT, Swing, JavaFX & SWT 7
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
W Swing Button mit Icon AWT, Swing, JavaFX & SWT 3
S svg Icon für Button (Batik Problem?) AWT, Swing, JavaFX & SWT 3
N Icon für Button wird nicht gefunden AWT, Swing, JavaFX & SWT 11
F Problem beim Positionieren von Icon und Text in Button AWT, Swing, JavaFX & SWT 2
J Swing JToolBar Button mit Icon AWT, Swing, JavaFX & SWT 4
klattiator Icon und Button zum Schließen in einem Tab AWT, Swing, JavaFX & SWT 3
I jbutton + icon icon an button anpassen, wie? AWT, Swing, JavaFX & SWT 25
G Icon auf Button per Klick darauf ändern? AWT, Swing, JavaFX & SWT 9
K Button Icon AWT, Swing, JavaFX & SWT 7
S Icon als Button AWT, Swing, JavaFX & SWT 5
N Icon auf einen Button AWT, Swing, JavaFX & SWT 6
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
P Swing Icon einfügen wirft eine Fehlermeldung 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
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
U AWT Smoother Icon AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D Icon in Menuitem einfügen AWT, Swing, JavaFX & SWT 8
C Icon in der Spaltenüberschrift AWT, Swing, JavaFX & SWT 1
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
C JavaFX Application -Icon wird falsch dargestellt AWT, Swing, JavaFX & SWT 7
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
D JavaFX - MenuItem mit Icon AWT, Swing, JavaFX & SWT 1
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
H Javafx - Menuitem - Icon AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
B Icon AWT, Swing, JavaFX & SWT 5
E Swing JFrame Icon AWT, Swing, JavaFX & SWT 3
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
S Würfelanimation icon updaten AWT, Swing, JavaFX & SWT 8
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
M Swing DoubleBuffer mit Icon AWT, Swing, JavaFX & SWT 3
TiME-SPLiNTER JLabel mit Icon & JFrame Resize AWT, Swing, JavaFX & SWT 5
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
X Icon in JTable abbilden AWT, Swing, JavaFX & SWT 10
M Icon wird bei externen Jar nicht angezeigt AWT, Swing, JavaFX & SWT 2
L toggel icon in jtable AWT, Swing, JavaFX & SWT 3
kodela Swing Icon in der Titelleiste "festnageln" AWT, Swing, JavaFX & SWT 6
G JLabel Icon Pfeilform AWT, Swing, JavaFX & SWT 14
S JCheckBoxMenuItem - Haekchen verschwindet bei Icon AWT, Swing, JavaFX & SWT 3
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
algorismi JInternalframe Icon AWT, Swing, JavaFX & SWT 14
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Icon für Fenster AWT, Swing, JavaFX & SWT 5
M Prozess-Icon im Prozessmanager AWT, Swing, JavaFX & SWT 8
C Swing JToggleButton und Icon AWT, Swing, JavaFX & SWT 2
S JTree - Knoten mit animiertem GIF/Icon AWT, Swing, JavaFX & SWT 5
S vector Icon AWT, Swing, JavaFX & SWT 3
C LayoutManager Icon Einfügen? AWT, Swing, JavaFX & SWT 6
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
R JTable mit Column die Icon und Integer enthält? AWT, Swing, JavaFX & SWT 3
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
J Icon einer JCheckBox AWT, Swing, JavaFX & SWT 6
D Swing Anwenungs Icon AWT, Swing, JavaFX & SWT 8
A Swing JTable Icon nur in einer Zelle AWT, Swing, JavaFX & SWT 2
R JTable Header - will links kleines icon hinzufuegen..? AWT, Swing, JavaFX & SWT 6
V [Swing] Overlay Icon AWT, Swing, JavaFX & SWT 5
K Schachbrett / Icon / JButton AWT, Swing, JavaFX & SWT 7
T Abbrechen-Icon entfernen AWT, Swing, JavaFX & SWT 4
S Buttons mit großen Icon AWT, Swing, JavaFX & SWT 7
G Sehr kleine JButtons mit Icon oder Beschriftung AWT, Swing, JavaFX & SWT 2
G Icon ans Ende einer JToolbar AWT, Swing, JavaFX & SWT 7
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
G JFrame Icon ändern AWT, Swing, JavaFX & SWT 5
G Icon und Text in JTable darstellen AWT, Swing, JavaFX & SWT 3
S Eclipse Icon Set AWT, Swing, JavaFX & SWT 6
G Icon in JTable AWT, Swing, JavaFX & SWT 9
S Jtree-Icon per Klick auf JBUTTON ändern AWT, Swing, JavaFX & SWT 3
A Icon,zentriert,Farbiger Text alles in einer Tabelle/Spalte ? AWT, Swing, JavaFX & SWT 4
L icon auf Label AWT, Swing, JavaFX & SWT 4
K Icon und Text auf JButton anordnen AWT, Swing, JavaFX & SWT 2
D Icon in MenuItem AWT, Swing, JavaFX & SWT 3
B jtree root icon ändern AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben