ImageIcon für JButton

Status
Nicht offen für weitere Antworten.

Xclipse

Aktives Mitglied
Hallo,

mit folgenden Zeilen erstelle ich einen JButton mit entsprechenden Icons.

Code:
eingabeButton = new JButton(new ImageIcon("D:\\Schulung\\icon\\1.png"));
eingabeButton.setRolloverIcon(new ImageIcon("D:\\Schulung\\icon\\2.png"));
eingabeButton.setPressedIcon(new ImageIcon("D:\\Schulung\\icon\\3.png"));

Damit rufe ich einen JInternalFrame auf.

Wie bekomme ich es nun hin, dass solange dieses JInternalFrame offen ist,
ein 4. Bild für den Button angezeigt werden soll und wenn es geschlossen wird
soll das 1. Bild wieder angezeigt werden?

Habe mit fast allen set-Methoden aus javax.swing.AbstractButton versucht doch leider ohne Erfolg!
Liegt es an der Kombination der set-Methoden oder muss ich anders vorgehen? z.B. irgend welche Abfragen etc. !!!!

_________________
~~~~~~~~~~~~~~~
Danke, Gruß und Tschö

Xclipse
 

Ariol

Top Contributor
Eine Klasse erstellen, die von JInternalFrame erbt:

Im Konstruktor das Icon umsetzen und im WindowListener beim Schließen wieder zurücksetzen.
 

Xclipse

Aktives Mitglied
Hallo Ariol,

zuerst danke für Deine hilfe.

Versuche es die ganze Zeit aber irgenwie geht es nicht. :bahnhof:

Mit myFrame rufe ich eFormular auf.
Solange eFormular auf ist, soll das Icon im myFrame das Bild 3.png zeigen, was auch passiert.

Sobald eFormular geschlossen ist, soll es wieder das Bild 1.png zeigen, was nicht passiert.

Und das verstehe ich nicht.

Habe die entsprechende Befehlszeile überall wo es relevant sein könnte in eFrame eingesetzt aber ..... mh! :bloed:

Code:
mf.eButton.setIcon(new ImageIcon("1.png"));

Hier sind die Codes der beiden Dateien. Vielleicht kann mir jemand helfen.

Vielleicht nicht ganz so elegant gelöst aber es "geht"!

Danke im Vorraus.

Das ist die aufrufende myFrame.

Code:
package tests;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class myFrame extends JFrame {

    public static final long serialVersionUID = 1L;

    public JPanel hPanel = null;
    public JPanel pLinks = null;

    public JButton eButton = null;
    public JDesktopPane pRechts = null;
    public boolean isInternalFrame = false;
    public eFormular eFrm;

    public JPanel getHauptPanel() {
        if (hPanel == null) {
            hPanel = new JPanel();
            hPanel.setLayout(new BorderLayout());
            hPanel.setBackground(Color.red);
            hPanel.add(getpLinks(), BorderLayout.WEST);
            hPanel.add(getaPanel(), BorderLayout.CENTER);
        }
        return hPanel;
    }

    public JButton getEingabeButton() {
        if (eButton == null) {
            eButton = new JButton();
            eButton = new JButton(new ImageIcon("1.png"));
            eButton.setRolloverIcon(new ImageIcon("2.png"));
            eButton.setPressedIcon(new ImageIcon("3.png"));
            eButton.setBounds(new Rectangle(15, 30, 96, 96));
            eButton.setBorderPainted(false);
            eButton.setContentAreaFilled(false);
            eButton.setFocusPainted(false);
            eButton.setText("Eingabe...");
            eButton.setVerticalTextPosition(SwingConstants.BOTTOM);
            eButton.setHorizontalTextPosition(SwingConstants.CENTER);
            eButton.addActionListener(new eFormularAufruf());
        }
        return eButton;
    }

    public JPanel getpLinks() {
        if (pLinks == null) {

            GridBagConstraints gBC_eButton = new GridBagConstraints();
            gBC_eButton.gridx = 0;
            gBC_eButton.weighty = 0.1;
            gBC_eButton.gridy = 0;

            pLinks = new JPanel();
            pLinks.setLayout(new GridBagLayout());
            pLinks.setBackground(new Color(241, 166, 36));
            pLinks.setPreferredSize(new Dimension(110, 100));
            pLinks.add(getEingabeButton(), gBC_eButton);
        }
        return pLinks;
    }

    public JDesktopPane getaPanel() {
        if (pRechts == null) {
            pRechts = new JDesktopPane();
            pRechts.setBackground(new Color(200,200,200));
        }
        return pRechts;
    }

    public myFrame() {
        super();
        initialize();
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }

    public void initialize() {
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setContentPane(getHauptPanel());
        this.setTitle("myFrame");
        this.setSize(new Dimension(1083, 846));
    }

    class eFormularAufruf implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            for (int i = 0; i < pRechts.getAllFrames().length
                    && !isInternalFrame; i++) {
                isInternalFrame = pRechts.getAllFrames()[i] == eFrm;
            }

            if (!isInternalFrame) {
                eFrm = new eFormular();
                pRechts.add(eFrm);
                eButton.setIcon(new ImageIcon("3.png"));

                if (!eFrm.isVisible()) {
                    eFrm.setVisible(true);
                }
            }
        }
    }

    class schliessButton implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            allesSchliessen();
        }
    }

    public void allesSchliessen() {
        this.setVisible(false);
        this.dispose();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                myFrame thisClass = new myFrame();
                thisClass.setVisible(true);
            }
        });
    }
}

und das ist die aufzurufende eFrame

Code:
package tests;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class eFormular extends JInternalFrame{

    public static final long serialVersionUID = 1L;

    private JPanel hPanel = null;
	private JButton sButton = null;
	public myFrame mf = new myFrame();

    public eFormular() {
        super();
        initialize();
        this.setVisible(true);
        mf.eButton.setIcon(new ImageIcon("1.png"));
    }

    private void initialize() {
        this.setSize(1000, 740);
        this.setTitle("Eingabe Formular");
        this.setResizable(true);
        this.setMaximizable(true);
        this.setIconifiable(true);
        this.setClosable(true);
        this.setContentPane(getHaputPanel());
    }

    private JButton getSchliessButton() {
        if (sButton == null) {
            sButton = new JButton(new ImageIcon("silver.png"));
            sButton.setRolloverIcon(new ImageIcon("red.jpg"));
            sButton.setPressedIcon(new ImageIcon("green.jpg"));
            sButton.setText("Schliessen");
            sButton.setBorderPainted(false);
            sButton.setContentAreaFilled(false);
            sButton.setFocusPainted(false);
            sButton.setVerticalTextPosition(SwingConstants.CENTER);
            sButton.setHorizontalTextPosition(SwingConstants.CENTER);
            sButton.addActionListener(new schliessButtonEFrm());
        }
        return sButton;
    }


    private JPanel getHaputPanel() {
        if (hPanel == null) {

        	GridLayout gridLayout_hauptPanel = new GridLayout(3,1);

            hPanel = new JPanel();
            hPanel.setLayout(gridLayout_hauptPanel);
            hPanel.setBackground(Color.white);

            GridBagConstraints gBC_getSchliessButton = new GridBagConstraints();
            gBC_getSchliessButton.gridx = 10;
            gBC_getSchliessButton.gridy = 14;
            gBC_getSchliessButton.gridheight = 1;
            gBC_getSchliessButton.gridwidth = 1;
            gBC_getSchliessButton.ipadx = 0;
            gBC_getSchliessButton.insets = new Insets(0, 10, 0, 0);

            hPanel.add(getSchliessButton(), gBC_getSchliessButton);

        }
        return hPanel;
    }

    class schliessButtonEFrm implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            mf.eButton.setIcon(new ImageIcon("1.png"));
            allesSchliessen();
        }
    }

    public void allesSchliessen() {
        this.setVisible(false);
        mf.eButton.setIcon(new ImageIcon("1.png"));
        this.dispose();
    }

}

_________________
~~~~~~~~~~~~~~~
Danke, Gruß und Tschö

Xclipse
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X JButton "effect" für ImageIcon AWT, Swing, JavaFX & SWT 6
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
O ImageIcon lädt nicht AWT, Swing, JavaFX & SWT 2
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
R ImageIcon - Über Socket AWT, Swing, JavaFX & SWT 1
P ImageIcon lade schlägt fehl AWT, Swing, JavaFX & SWT 5
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
C Swing ImageIcon mit Bild aus Temp-Verzeichniss füllen AWT, Swing, JavaFX & SWT 15
P ImageIcon auf Rectangle AWT, Swing, JavaFX & SWT 3
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
A Swing ImageIcon hover AWT, Swing, JavaFX & SWT 9
M ImageIcon Bild wird beim verkleinern des Fensters nicht verkleinert AWT, Swing, JavaFX & SWT 3
B Swing ImageIcon Resizing AWT, Swing, JavaFX & SWT 15
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Warten bis neues ImageIcon zugewiesen ist AWT, Swing, JavaFX & SWT 3
Zettelkasten imageIcon-Rand wegmachen AWT, Swing, JavaFX & SWT 5
S Abspeichern aus einem ImageIcon ins korrekte Format AWT, Swing, JavaFX & SWT 2
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
S ImageIcon Grösse anpassen AWT, Swing, JavaFX & SWT 2
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
B Problem mit imageIO und ImageIcon AWT, Swing, JavaFX & SWT 5
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
C Swing JComboBox - Problem bei Darstellen von ImageIcon AWT, Swing, JavaFX & SWT 4
G ImageIcon viel zu groß AWT, Swing, JavaFX & SWT 2
G IMageIcon Bildgröße ändern AWT, Swing, JavaFX & SWT 7
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
W ImageIcon im JLabel mit autosize? AWT, Swing, JavaFX & SWT 3
B ImageIcon JFrame AWT, Swing, JavaFX & SWT 3
M ImageIcon auf AbstractButton links-/rechtbündig AWT, Swing, JavaFX & SWT 2
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
M ImageIcon in JLabel verkleinern AWT, Swing, JavaFX & SWT 8
S n-e-w JLabel(n-e-w ImageIcon(i)) funkt. nicht im JScrollPane AWT, Swing, JavaFX & SWT 2
M Problem, an ImageIcon in JPanels zu kommen. AWT, Swing, JavaFX & SWT 2
J Bildfilterung und Ausgabe in ein ImageIcon AWT, Swing, JavaFX & SWT 2
F ImageIcon -> BufferedImage AWT, Swing, JavaFX & SWT 2
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
G JLabel und ImageIcon AWT, Swing, JavaFX & SWT 16
padde479 ImageIcon laden AWT, Swing, JavaFX & SWT 6
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
J ImageIcon, Image - 100% CPU Auslastung . AWT, Swing, JavaFX & SWT 3
B imageicon relativer Pfad AWT, Swing, JavaFX & SWT 5
F ImageIcon Größe ändern AWT, Swing, JavaFX & SWT 29
M ImageIcon / .paintIcon() AWT, Swing, JavaFX & SWT 2
M Problem mit ImageIcon in einer JTable AWT, Swing, JavaFX & SWT 2
D JButton einen neuen ImageIcon setzen? AWT, Swing, JavaFX & SWT 2
R resize ImageIcon AWT, Swing, JavaFX & SWT 7
B Problem mit ImageIcon/Swing in Linux AWT, Swing, JavaFX & SWT 6
K ImageIcon fehler ? AWT, Swing, JavaFX & SWT 4
M ImageIcon laden? AWT, Swing, JavaFX & SWT 2
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ein Patten für das Gluon Mobile Framework AWT, Swing, JavaFX & SWT 7
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben