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
 
Eine Klasse erstellen, die von JInternalFrame erbt:

Im Konstruktor das Icon umsetzen und im WindowListener beim Schließen wieder zurücksetzen.
 
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.

Zurück
Oben