# Eigene Klasse für JButton aus dem JFrame abrufen



## stylegangsta (24. Sep 2015)

Hi zusammen,

aus Google bin ich eh' nicht Schlau geworden und in der Forumsuche hatte ich keinen Erfolg. Vielleicht geht das auch gar nicht was ich vorhabe.

Ich habe in einem JFrame viele Buttons (mit den Einstellungen, die ich brauche). Hier einer davon (getContentPane() usw. ist alle weiter oben im Code enthalten):

```
// Baden-Württemberg
        try {
            BW_Wappen = ImageIO.read(getClass().getResource("/img/Baden-Wuerttemberg.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }

        btnBW = new JButton();
        btnBW.addMouseListener(new MouseEventBW(btnBW));
        btnBW.setContentAreaFilled(false);
        btnBW.setIcon(new ImageIcon(BW_Wappen));
        btnBW.setFocusPainted(false);
        lblBW = new JLabel("Baden - W.");
        lblBW.setFont(lblBW.getFont().deriveFont(Font.BOLD, 15));
        lblBW.setForeground(Color.BLACK);
        lblBW.setHorizontalAlignment(SwingConstants.CENTER);
        lblBW.setVerticalAlignment(SwingConstants.CENTER);
        lblBW.setBounds(220, 138, 110, 140);
        btnBW.setBounds(220, 58, 110, 140);
```

Was die Button Eigenschaften betrifft habe ich eine eigene Klasse erstellt. Ist diese überhaupt Korrekt?

```
package Buttons;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;

public class BtnBayern {

    BufferedImage Bayern_Wappen;
  
    private final AbstractButton btnBayern;
  
    public BtnBayern(AbstractButton btnBayern) {
        this.btnBayern = btnBayern;

    try {
        Bayern_Wappen = ImageIO.read(getClass().getResource("/img/Bayern.png"));
    } catch (IOException IOex) {
        System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
        IOex.printStackTrace();
    } catch (IllegalArgumentException IAex) {
        System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
        IAex.printStackTrace();
    }
    btnBayern = new JButton();
    btnBayern.setContentAreaFilled(false);
    btnBayern.setIcon(new ImageIcon(Bayern_Wappen));
    btnBayern.setFocusPainted(false);
    btnBayern.setBounds(340, 58, 110, 140);
}

    public AbstractButton setBtnBayern() {
        return btnBayern;
    }
}
```

Wenn diese Korrekt ist, wie kann ich die jetzt aus dem JFrame aufrufen. Denn es sind 16 Buttons und der Frame Code wird dadurch extrem lang und übersichtlich, wenn ich alle 16 da rein schreibe.


----------



## Joose (24. Sep 2015)

Ich verstehe dein Problem nicht ganz, daher kann ich dir diesbezüglich auch nicht weiterhelfen.

Was ich aber sehe ist ein Fehler in deiner Klasse BtnBayern.
Im Konstruktor übergibst du ein Objekt der Klasse "AbstractButton". Nach dem try/catch Block wird dieser Parameter mit einem neuen JButton Objekt initialisiert. Warum? Dieses neue Objekt wird nicht weiter verwendet und geht nach dem Konstruktoraufruf wieder verloren


----------



## stylegangsta (24. Sep 2015)

Joose hat gesagt.:


> Nach dem try/catch Block wird dieser Parameter mit einem neuen JButton Objekt initialisiert. Warum?


Deswegen meine Frage, ob das überhaupt Korrekt ist.



Joose hat gesagt.:


> Ich verstehe dein Problem nicht ganz, daher kann ich dir diesbezüglich auch nicht weiterhelfen.



Mein Problem ist den Code des Frames zu verkürzen, in dem ich für jeden Button eine eigene Klasse erstelle und nur noch den Button aufrufe im Frame ohne noch die ganzen Eigenschaften dabei stehen zu haben. Also einfach nur übersichtlicher. Denn so sieht der Code aus mit den ganzen try/catch und Buttoneigenschaften.

```
package ProgramWindow;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;

import Buttons.Credits;
import MouseEvents.MouseEventBW;
import MouseEvents.MouseEventBayern;
import MouseEvents.MouseEventBerlin;
import MouseEvents.MouseEventBrb;
import MouseEvents.MouseEventBremen;
import MouseEvents.MouseEventHamburg;
import MouseEvents.MouseEventHessen;
import MouseEvents.MouseEventMV;
import MouseEvents.MouseEventNRW;
import MouseEvents.MouseEventNsachsen;
import MouseEvents.MouseEventRP;
import MouseEvents.MouseEventSH;
import MouseEvents.MouseEventSaarland;
import MouseEvents.MouseEventSachsen;
import MouseEvents.MouseEventSachsenAnh;
import MouseEvents.MouseEventTh;

@SuppressWarnings("serial")
public class AEKFrame extends JFrame {

    // Titelgrafik
    private JLabel lblTitelText;
    private JLabel lblAeskulapStab;

    // Anzeige Fortschrittsbalken
    private JProgressBar progFortSchrittsAnzeige;

    // Buttons optische Einstellung mit Bundesland Wappen
    public void JButton() {

        setHorizontalAlignment(SwingConstants.CENTER);
        setVerticalAlignment(SwingConstants.CENTER);
    }

    // Vetikale Ausrichtung
    private static void setVerticalAlignment(int center) {

    }

    // Horizontale Ausrichtung
    private static void setHorizontalAlignment(int center) {

    }

    // Buttons mit Bundesland Wappen
    private JButton btnBW;
    private JButton btnBayern;
    private JButton btnBerlin;
    private JButton btnBrb;
    private JButton btnBremen;
    private JButton btnHamburg;
    private JButton btnHessen;
    private JButton btnMV;
    private JButton btnNsachsen;
    private JButton btnNRW;
    private JButton btnRP;
    private JButton btnSaarland;
    private JButton btnSachsen;
    private JButton btnSachsenAnh;
    private JButton btnSH;
    private JButton btnTh;

    BufferedImage BW_Wappen, Bayern_Wappen, Berlin_Wappen, Brb_Wappen, Bremen_Wappen, Hamburg_Wappen, Hessen_Wappen,
    MV_Wappen, Nsachsen_Wappen, NRW_Wappen, RP_Wappen, Saarland_Wappen, Sachsen_Wappen, SachsenAnh_Wappen,
    SH_Wappen, Th_Wappen;;

    // Allgemeine Schaltflächen
    private JButton btnCredits;

    private class CreditsAction implements ActionListener {

        // Aufrufen der Credits - Klasse
        // btnCredits Popup - Fenster html kodiert
        @Override
        public void actionPerformed(ActionEvent e) {
            String msg = new String();
            msg = "<html><left><p style='font-size:9px;'><font face=\''>"
                    + "Microsoft Corporation in the United States and/or other countries.</em></left></p></html>";
            Credits popup = new Credits(msg);
            popup.setLocationRelativeTo(AEKFrame.this);
            popup.setVisible(true);
        }
    }

    // Äskulapnatter
    BufferedImage imgAeskulap;

    // Bundesland als Text unter Schaltflächen
    private JLabel lblBW, lblBayern, lblBerlin, lblBrb, lblBremen, lblHamburg, lblHessen, lblMV, lblNsachsen, lblNRW,
    lblRP, lblSaarland, lblSachsen, lblSachsenAnh, lblSH, lblTh;

    public AEKFrame() {

        /*
         * super ("\u00C4K DataBase Reader"); "Programmname: ÄK DataBase Reader"
         * setSize(1200, 530); "Fenstergröße des Programms: 1200px x 530px"
         * setLocationRelativeTo(null);
         * "Sofern kein weiteres Programm bzw. Fenster geöffnet ist" wird das
         * Programmfenster auf dem Bildschirm zentriert
         * setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         * "Beendet das Programm (darf nicht gelöscht werden ! ! !)"
         */
        super("\u00C4K DataBase Reader \u00a9 by Dr.EAMTeam V 1.09.15");
        setSize(1200, 530);
        setLocationRelativeTo(null);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        createWidgets();
        addWidgets();

    }

    // Fenster Elemente
    private void addWidgets() {
        getContentPane().setLayout(null);
        getContentPane().add(lblTitelText);
        getContentPane().add(lblAeskulapStab);
        getContentPane().add(progFortSchrittsAnzeige);
        getContentPane().add(btnBW);
        getContentPane().add(lblBW);
        getContentPane().add(btnBayern);
        getContentPane().add(lblBayern);
        getContentPane().add(btnBerlin);
        getContentPane().add(lblBerlin);
        getContentPane().add(btnBrb);
        getContentPane().add(lblBrb);
        getContentPane().add(btnBremen);
        getContentPane().add(lblBremen);
        getContentPane().add(btnHamburg);
        getContentPane().add(lblHamburg);
        getContentPane().add(btnHessen);
        getContentPane().add(lblHessen);
        getContentPane().add(btnMV);
        getContentPane().add(lblMV);
        getContentPane().add(btnNsachsen);
        getContentPane().add(lblNsachsen);
        getContentPane().add(btnNRW);
        getContentPane().add(lblNRW);
        getContentPane().add(btnRP);
        getContentPane().add(lblRP);
        getContentPane().add(btnSaarland);
        getContentPane().add(lblSaarland);
        getContentPane().add(btnSachsen);
        getContentPane().add(lblSachsen);
        getContentPane().add(btnSachsenAnh);
        getContentPane().add(lblSachsenAnh);
        getContentPane().add(btnSH);
        getContentPane().add(lblSH);
        getContentPane().add(btnTh);
        getContentPane().add(lblTh);
        getContentPane().add(btnCredits);
    }

    // Layout
    /*
     * Titeltext in jedem System vorhande Schriftart, Fett, Kursiv, Größe 30
     * Schriftfarbe rot Titelfeld durchsichtig Hintergrundfarbe weiß Titeltext
     * horizontal zentriert Titelfeld Postion x, y, Breite, Höhe
     */
    private void createWidgets() {

        // Hex Farbnummer Titeltext "Weiterbildungsdatenbanken der Ärztekammern"
        Color Titeltext = new Color(0xE60005);
        lblTitelText = new JLabel("Weiterbildungsdatenbanken der \u00C4rztekammern");
        lblTitelText.setFont(lblTitelText.getFont().deriveFont(Font.BOLD + Font.ITALIC, 30));
        lblTitelText.setForeground(Titeltext);
        lblTitelText.setOpaque(true);
        lblTitelText.setBackground(Color.WHITE);
        lblTitelText.setHorizontalAlignment(SwingConstants.CENTER);
        lblTitelText.setBounds(0, 0, 1194, 40);

        // Äskulapnatter
        try {
            imgAeskulap = ImageIO.read(getClass().getResource("/img/aeskulap-stab.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }

        lblAeskulapStab = new JLabel();
        lblAeskulapStab.setIcon(new ImageIcon(imgAeskulap));
        lblAeskulapStab.setBounds(10, 50, 200, 420);

        // Fortschrittsbalkenanzeige
        progFortSchrittsAnzeige = new JProgressBar(0, 100);
        progFortSchrittsAnzeige.setBounds(0, 480, 1194, 20);
        progFortSchrittsAnzeige.setAlignmentX(CENTER_ALIGNMENT);
        progFortSchrittsAnzeige.setVisible(isActive());

        // Bundesland Buttons:
        /*
         * Postionsangabe und größe in Form (x, y, Breite, Höhe)
         */

        // Baden-Württemberg
        try {
            BW_Wappen = ImageIO.read(getClass().getResource("/img/Baden-Wuerttemberg.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }

        btnBW = new JButton();
        btnBW.addMouseListener(new MouseEventBW(btnBW));
        btnBW.setContentAreaFilled(false);
        btnBW.setIcon(new ImageIcon(BW_Wappen));
        btnBW.setFocusPainted(false);
        lblBW = new JLabel("Baden - W.");
        lblBW.setFont(lblBW.getFont().deriveFont(Font.BOLD, 15));
        lblBW.setForeground(Color.BLACK);
        lblBW.setHorizontalAlignment(SwingConstants.CENTER);
        lblBW.setVerticalAlignment(SwingConstants.CENTER);
        lblBW.setBounds(220, 138, 110, 140);
        btnBW.setBounds(220, 58, 110, 140);

        // Bayern
        try {
            Bayern_Wappen = ImageIO.read(getClass().getResource("/img/Bayern.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnBayern = new JButton();
        btnBayern.addMouseListener(new MouseEventBayern(btnBayern));
        btnBayern.setContentAreaFilled(false);
        btnBayern.setIcon(new ImageIcon(Bayern_Wappen));
        btnBayern.setFocusPainted(false);
        lblBayern = new JLabel("Bayern");
        lblBayern.setFont(lblBayern.getFont().deriveFont(Font.BOLD, 15));
        lblBayern.setForeground(Color.BLACK);
        lblBayern.setHorizontalAlignment(SwingConstants.CENTER);
        lblBayern.setVerticalAlignment(SwingConstants.CENTER);
        lblBayern.setBounds(340, 138, 110, 140);
        btnBayern.setBounds(340, 58, 110, 140);

        // Berlin
        try {
            Berlin_Wappen = ImageIO.read(getClass().getResource("/img/Berlin.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnBerlin = new JButton();
        btnBerlin.addMouseListener(new MouseEventBerlin(btnBerlin));
        btnBerlin.setContentAreaFilled(false);
        btnBerlin.setIcon(new ImageIcon(Berlin_Wappen));
        btnBerlin.setFocusPainted(false);
        lblBerlin = new JLabel("Berlin");
        lblBerlin.setFont(lblBerlin.getFont().deriveFont(Font.BOLD, 15));
        lblBerlin.setForeground(Color.BLACK);
        lblBerlin.setHorizontalAlignment(SwingConstants.CENTER);
        lblBerlin.setVerticalAlignment(SwingConstants.CENTER);
        lblBerlin.setBounds(460, 138, 110, 140);
        btnBerlin.setBounds(460, 58, 110, 140);

        // Brandenburg
        try {
            Brb_Wappen = ImageIO.read(getClass().getResource("/img/Brandenburg.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnBrb = new JButton();
        btnBrb.addMouseListener(new MouseEventBrb(btnBrb));
        btnBrb.setContentAreaFilled(false);
        btnBrb.setIcon(new ImageIcon(Brb_Wappen));
        btnBrb.setFocusPainted(false);
        lblBrb = new JLabel("Brandenburg");
        lblBrb.setFont(lblBrb.getFont().deriveFont(Font.BOLD, 15));
        lblBrb.setForeground(Color.BLACK);
        lblBrb.setHorizontalAlignment(SwingConstants.CENTER);
        lblBrb.setVerticalAlignment(SwingConstants.CENTER);
        lblBrb.setBounds(580, 138, 110, 140);
        btnBrb.setBounds(580, 58, 110, 140);

        // Bremen
        try {
            Bremen_Wappen = ImageIO.read(getClass().getResource("/img/Bremen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnBremen = new JButton();
        btnBremen.addMouseListener(new MouseEventBremen(btnBremen));
        btnBremen.setContentAreaFilled(false);
        btnBremen.setIcon(new ImageIcon(Bremen_Wappen));
        btnBremen.setFocusPainted(false);
        lblBremen = new JLabel("Bremen");
        lblBremen.setFont(lblBremen.getFont().deriveFont(Font.BOLD, 15));
        lblBremen.setForeground(Color.BLACK);
        lblBremen.setHorizontalAlignment(SwingConstants.CENTER);
        lblBremen.setVerticalAlignment(SwingConstants.CENTER);
        lblBremen.setBounds(700, 138, 110, 140);
        btnBremen.setBounds(700, 58, 110, 140);

        // Hamburg
        try {
            Hamburg_Wappen = ImageIO.read(getClass().getResource("/img/Hamburg.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnHamburg = new JButton();
        btnHamburg.addMouseListener(new MouseEventHamburg(btnHamburg));
        btnHamburg.setContentAreaFilled(false);
        btnHamburg.setIcon(new ImageIcon(Hamburg_Wappen));
        btnHamburg.setFocusPainted(false);
        lblHamburg = new JLabel("Hamburg");
        lblHamburg.setFont(lblHamburg.getFont().deriveFont(Font.BOLD, 15));
        lblHamburg.setForeground(Color.BLACK);
        lblHamburg.setHorizontalAlignment(SwingConstants.CENTER);
        lblHamburg.setVerticalAlignment(SwingConstants.CENTER);
        lblHamburg.setBounds(820, 138, 110, 140);
        btnHamburg.setBounds(820, 58, 110, 140);

        // Hessen
        try {
            Hessen_Wappen = ImageIO.read(getClass().getResource("/img/Hessen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnHessen = new JButton();
        btnHessen.addMouseListener(new MouseEventHessen(btnHessen));
        btnHessen.setContentAreaFilled(false);
        btnHessen.setIcon(new ImageIcon(Hessen_Wappen));
        btnHessen.setFocusPainted(false);
        lblHessen = new JLabel("Hessen");
        lblHessen.setFont(lblHessen.getFont().deriveFont(Font.BOLD, 15));
        lblHessen.setForeground(Color.BLACK);
        lblHessen.setHorizontalAlignment(SwingConstants.CENTER);
        lblHessen.setVerticalAlignment(SwingConstants.CENTER);
        lblHessen.setBounds(940, 138, 110, 140);
        btnHessen.setBounds(940, 58, 110, 140);

        // Mecklenburg - Vorpommern
        try {
            MV_Wappen = ImageIO.read(getClass().getResource("/img/Mecklenburg-Vorpommern.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnMV = new JButton();
        btnMV.addMouseListener(new MouseEventMV(btnMV));
        btnMV.setContentAreaFilled(false);
        btnMV.setIcon(new ImageIcon(MV_Wappen));
        btnMV.setFocusPainted(false);
        lblMV = new JLabel("MV");
        lblMV.setFont(lblMV.getFont().deriveFont(Font.BOLD, 15));
        lblMV.setForeground(Color.BLACK);
        lblMV.setHorizontalAlignment(SwingConstants.CENTER);
        lblMV.setVerticalAlignment(SwingConstants.CENTER);
        lblMV.setBounds(1060, 138, 110, 140);
        btnMV.setBounds(1060, 58, 110, 140);

        // Niedersachsen
        try {
            Nsachsen_Wappen = ImageIO.read(getClass().getResource("/img/Niedersachsen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnNsachsen = new JButton();
        btnNsachsen.addMouseListener(new MouseEventNsachsen(btnNsachsen));
        btnNsachsen.setContentAreaFilled(false);
        btnNsachsen.setIcon(new ImageIcon(Nsachsen_Wappen));
        btnNsachsen.setFocusPainted(false);
        lblNsachsen = new JLabel("Nsachsen");
        lblNsachsen.setFont(lblNsachsen.getFont().deriveFont(Font.BOLD, 15));
        lblNsachsen.setForeground(Color.BLACK);
        lblNsachsen.setHorizontalAlignment(SwingConstants.CENTER);
        lblNsachsen.setVerticalAlignment(SwingConstants.CENTER);
        lblNsachsen.setBounds(220, 386, 110, 140);
        btnNsachsen.setBounds(220, 306, 110, 140);

        // Nordrhein - Westfalen
        try {
            NRW_Wappen = ImageIO.read(getClass().getResource("/img/NRW.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnNRW = new JButton();
        btnNRW.addMouseListener(new MouseEventNRW(btnNRW));
        btnNRW.setContentAreaFilled(false);
        btnNRW.setIcon(new ImageIcon(NRW_Wappen));
        btnNRW.setFocusPainted(false);
        lblNRW = new JLabel("NRW");
        lblNRW.setFont(lblNRW.getFont().deriveFont(Font.BOLD, 15));
        lblNRW.setForeground(Color.BLACK);
        lblNRW.setHorizontalAlignment(SwingConstants.CENTER);
        lblNRW.setVerticalAlignment(SwingConstants.CENTER);
        lblNRW.setBounds(340, 386, 110, 140);
        btnNRW.setBounds(340, 306, 110, 140);

        // Rheinland - Pfalz
        try {
            RP_Wappen = ImageIO.read(getClass().getResource("/img/Rheinland-Pfalz.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnRP = new JButton();
        btnRP.addMouseListener(new MouseEventRP(btnRP));
        btnRP.setContentAreaFilled(false);
        btnRP.setIcon(new ImageIcon(RP_Wappen));
        btnRP.setFocusPainted(false);
        lblRP = new JLabel("Rheinland - P.");
        lblRP.setFont(lblRP.getFont().deriveFont(Font.BOLD, 15));
        lblRP.setForeground(Color.BLACK);
        lblRP.setHorizontalAlignment(SwingConstants.CENTER);
        lblRP.setVerticalAlignment(SwingConstants.CENTER);
        lblRP.setBounds(460, 386, 110, 140);
        btnRP.setBounds(460, 306, 110, 140);

        // Saarland
        try {
            Saarland_Wappen = ImageIO.read(getClass().getResource("/img/Saarland.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnSaarland = new JButton();
        btnSaarland.addMouseListener(new MouseEventSaarland(btnSaarland));
        btnSaarland.setContentAreaFilled(false);
        btnSaarland.setIcon(new ImageIcon(Saarland_Wappen));
        btnSaarland.setFocusPainted(false);
        lblSaarland = new JLabel("Saarland");
        lblSaarland.setFont(lblSaarland.getFont().deriveFont(Font.BOLD, 15));
        lblSaarland.setForeground(Color.BLACK);
        lblSaarland.setHorizontalAlignment(SwingConstants.CENTER);
        lblSaarland.setVerticalAlignment(SwingConstants.CENTER);
        lblSaarland.setBounds(580, 386, 110, 140);
        btnSaarland.setBounds(580, 306, 110, 140);

        // Sachsen
        try {
            Sachsen_Wappen = ImageIO.read(getClass().getResource("/img/Sachsen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnSachsen = new JButton();
        btnSachsen.addMouseListener(new MouseEventSachsen(btnSachsen));
        btnSachsen.setContentAreaFilled(false);
        btnSachsen.setIcon(new ImageIcon(Sachsen_Wappen));
        btnSachsen.setFocusPainted(false);
        lblSachsen = new JLabel("Sachsen");
        lblSachsen.setFont(lblSachsen.getFont().deriveFont(Font.BOLD, 15));
        lblSachsen.setForeground(Color.BLACK);
        lblSachsen.setHorizontalAlignment(SwingConstants.CENTER);
        lblSachsen.setVerticalAlignment(SwingConstants.CENTER);
        lblSachsen.setBounds(700, 386, 110, 140);
        btnSachsen.setBounds(700, 306, 110, 140);

        // Sachsen - Anhaltt
        try {
            SachsenAnh_Wappen = ImageIO.read(getClass().getResource("/img/Sachsen-Anhalt.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnSachsenAnh = new JButton();
        btnSachsenAnh.addMouseListener(new MouseEventSachsenAnh(btnSachsenAnh));
        btnSachsenAnh.setContentAreaFilled(false);
        btnSachsenAnh.setIcon(new ImageIcon(SachsenAnh_Wappen));
        btnSachsenAnh.setFocusPainted(false);
        lblSachsenAnh = new JLabel("Sachsen - A.");
        lblSachsenAnh.setFont(lblSachsenAnh.getFont().deriveFont(Font.BOLD, 15));
        lblSachsenAnh.setForeground(Color.BLACK);
        lblSachsenAnh.setHorizontalAlignment(SwingConstants.CENTER);
        lblSachsenAnh.setVerticalAlignment(SwingConstants.CENTER);
        lblSachsenAnh.setBounds(820, 386, 110, 140);
        btnSachsenAnh.setBounds(820, 306, 110, 140);

        // Schleswig - Holstein
        try {
            SH_Wappen = ImageIO.read(getClass().getResource("/img/Schleswig-Holstein.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnSH = new JButton();
        btnSH.addMouseListener(new MouseEventSH(btnSH));
        btnSH.setContentAreaFilled(false);
        btnSH.setIcon(new ImageIcon(SH_Wappen));
        btnSH.setFocusPainted(false);
        lblSH = new JLabel("Schleswig - H.");
        lblSH.setFont(lblSH.getFont().deriveFont(Font.BOLD, 15));
        lblSH.setForeground(Color.BLACK);
        lblSH.setHorizontalAlignment(SwingConstants.CENTER);
        lblSH.setVerticalAlignment(SwingConstants.CENTER);
        lblSH.setBounds(940, 386, 110, 140);
        btnSH.setBounds(940, 306, 110, 140);

        // Thüringen
        try {
            Th_Wappen = ImageIO.read(getClass().getResource("/img/Thueringen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
        btnTh = new JButton();
        btnTh.addMouseListener(new MouseEventTh(btnTh));
        btnTh.setContentAreaFilled(false);
        btnTh.setIcon(new ImageIcon(Th_Wappen));
        btnTh.setFocusPainted(false);
        lblTh = new JLabel("Th\u00FCringen");
        lblTh.setFont(lblTh.getFont().deriveFont(Font.BOLD, 15));
        lblTh.setForeground(Color.BLACK);
        lblTh.setHorizontalAlignment(SwingConstants.CENTER);
        lblTh.setVerticalAlignment(SwingConstants.CENTER);
        lblTh.setBounds(1060, 386, 110, 140);
        btnTh.setBounds(1060, 306, 110, 140);

        // Allgemeine Buttons: Über
        btnCredits = new JButton("\u00DCBER \u00C4K");
        btnCredits.setFont(btnCredits.getFont().deriveFont(Font.BOLD, 15));
        btnCredits.setForeground(Color.decode("15073285"));
        btnCredits.setBounds(220, 240, 110, 40);
        btnCredits.addActionListener(new CreditsAction());
        btnCredits.setFocusPainted(false);
    }
}
```


----------



## thet1983 (24. Sep 2015)

warum schreibst du nicht eine Methode die ein JButton zurückgibt und in dieser Methode schreibst du alles rein was du brauchst....


```
private JButton createButton(/* Parameterliste */){
   JButton b = new JButton(/*...*/);
   // b.setTitle();
   // ...
   // ....
   return b;
}

// aufruf wäre dann --> JButton btn = createButton(/* Parameter übergeben */);
```

meinst du das??

--> Edit: Auch deine ganzen BufferedImages und JLabels  kannst du in eine Methode packen
--> RückgabeTyp BufferedImage, JLabel...


----------



## stylegangsta (24. Sep 2015)

thet1983 hat gesagt.:


> warum schreibst du nicht eine Methode die ein JButton zurückgibt und in dieser Methode schreibst du alles rein was du brauchst....
> 
> 
> ```
> ...



Ich glaube schon, dass es das ist. Versuche es mal. Und schreibe Ergebnis. Danke schon mal.


----------



## Joose (24. Sep 2015)

stylegangsta hat gesagt.:


> Deswegen meine Frage, ob das überhaupt Korrekt ist.



Nein so wie du den Code aktuell hast ist er falsch und funktioniert nicht.



stylegangsta hat gesagt.:


> Mein Problem ist den Code des Frames zu verkürzen, in dem die für jeden Button eine eigene Klasse erstelle und nur noch den Button aufrufe im Frame ohne noch die ganzen Eigenschaften dabei stehen zu haben. Also einfach nur übersichtlicher. Denn so sieht der Code aus mit den ganzen try/catch und Buttoneigenschaften.
> 
> ```
> // Baden-Württemberg
> ...



Stimmt du hast hier viel doppelten Code. Aber den wirst du auch haben wenn du für jeden Button eine eigene Klasse machst, der einzige Unterschied du verteilst den Code auf mehrere Klassen. (ist zwar übersichtlicher aber nicht wirklich besser)

Wie wäre es mit einer Methode welche dir die Buttons erzeugt?


```
public JButton getBundeslandButton(String bundeslandName, .....) {
  try {
  Wappen = ImageIO.read(getClass().getResource("/img/" + bundeslandName + ".png"));
  } catch (IOException ex) {
  System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
  ex.printStackTrace();
  } catch (IllegalArgumentException ex) {
  System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
  ex.printStackTrace();
  }
  JButton bundesland = new JButton();
  bundesland.addMouseListener(new MouseEventBayern(bundesland)); // aus der Methode rausziehen? Per reflection laden > "MouseEvent"  + bundeslandName?
  bundesland.setContentAreaFilled(false);
  bundesland.setIcon(new ImageIcon(Wappen));
  bundesland.setFocusPainted(false);
  bundesland.setBounds(.......);
   return bundesland;
}

public JLabel getBundeslandLabel(String bundeslandName, ....) {
   JLabel bundesland = new JLabel(bundeslandName);
  bundesland = new JLabel("Bayern");
  bundesland.setFont(bundesland.getFont().deriveFont(Font.BOLD, 15));
  bundesland.setForeground(Color.BLACK);
  bundesland.setHorizontalAlignment(SwingConstants.CENTER);
  bundesland.setVerticalAlignment(SwingConstants.CENTER);
  bundesland.setBounds(........);
```

EDIT: Oje da war ich zu langsam, hätte den Beitrag vielleicht doch vorm Mittagessen fertigschreiben sollen ^^,


----------



## stylegangsta (24. Sep 2015)

thet1983 hat gesagt.:


> warum schreibst du nicht eine Methode die ein JButton zurückgibt und in dieser Methode schreibst du alles rein was du brauchst....
> 
> 
> ```
> ...



Das mit der Klasse hat geklappt denke ich, jedenfalls nichts rotes, aber der Aufruf im Frame klappt irgendwie nicht oder ich habe was falsch gemacht. Der Aufruf im Frame und der getContentPane().add.... unterstreichen sich die ganze Zeit Gegenseitig rot mit der automatischen KOrrektur von eclipse.

Na ja, dann bleibt es eben so. Aber Danke. Was du mir gestern gezeigt hast, hat auch schon mega viel geholfen um den Code zu verkürzen.


----------



## stylegangsta (24. Sep 2015)

Joose hat gesagt.:


> Nein so wie du den Code aktuell hast ist er falsch und funktioniert nicht.



Der Code funktioniert Reibungslos, da waren bis gestern sogar auch die ganzen MouseEvents drin. Diese sind aber dank @thet1983 jetzt alle in einer getrennten Klasse.



Joose hat gesagt.:


> Stimmt du hast hier viel doppelten Code. Aber den wirst du auch haben wenn du für jeden Button eine eigene Klasse machst, der einzige Unterschied du verteilst den Code auf mehrere Klassen. (ist zwar übersichtlicher aber nicht wirklich besser)
> 
> Wie wäre es mit einer Methode welche dir die Buttons erzeugt?
> 
> ...



Das sieht verdammt Interessant aus, kann aber wirklich dauern, bis ich darauf ein Ergebnis poste. Wahrscheinlich sogar erst am Samstag, wenn ich Pech habe.

EDIT: Aber nur weil ich bis Samstag nicht da bin.


----------



## Joose (24. Sep 2015)

stylegangsta hat gesagt.:


> Das mit der Klasse hat geklappt denke ich, jedenfalls nichts rotes, aber der Aufruf im Frame klappt irgendwie nicht oder ich habe was falsch gemacht. Der Aufruf im Frame und der getContentPane().add.... unterstreichen sich die ganze Zeit Gegenseitig rot mit der automatischen KOrrektur von eclipse.



Ohne etwas Code können wir nur raten was vielleicht nicht geklappt hat usw.
Aber wie thet1983 schon gesagt habe und an meinem Beispiel zu sehen ist: Lagere die Erstellung von deinen Buttons und Labels in eine parametisierte Methode aus! Eigene Klassen je Bundesland Button sind da weniger ziel führend


----------



## Joose (24. Sep 2015)

stylegangsta hat gesagt.:


> Der Code funktioniert Reibungslos, da waren bis gestern sogar auch die ganzen MouseEvents drin. Diese sind aber dank @thet1983 jetzt alle in einer getrennten Klasse.



Warum fragst du dann ob dieser korrekt ist wenn du es eh weißt.
Aber trotzdem die Klasse BtnBayern hat so wenig Sinn, wie oben schon geschrieben erzeugst du ein neues JButton Objekt mit dem du nichts weiter machst. 
Es macht eben einen Unterschied zwischen "this.btnBayern" und "btnBayern"


----------



## stylegangsta (24. Sep 2015)

Joose hat gesagt.:


> Ohne etwas Code können wir nur raten was vielleicht nicht geklappt hat usw.
> Aber wie thet1983 schon gesagt habe und an meinem Beispiel zu sehen ist: Lagere die Erstellung von deinen Buttons und Labels in eine parametisierte Methode aus! Eigene Klassen je Bundesland Button sind da weniger ziel führend



Also so mit (String xyz, int x, int z)?


----------



## stylegangsta (24. Sep 2015)

Joose hat gesagt.:


> Warum fragst du dann ob dieser korrekt ist wenn du es eh weißt.
> Aber trotzdem die Klasse BtnBayern hat so wenig Sinn, wie oben schon geschrieben erzeugst du ein neues JButton Objekt mit dem du nichts weiter machst.
> Es macht eben einen Unterschied zwischen "this.btnBayern" und "btnBayern"



Damit meinte ich die Klasse AEKFrame, nicht BtnBayern. Du hattest den Kommentar doch zum AEKFrame geschrieben. So dachte ich jedenfalls. Das mit der BtnBayern Klasse weiß ich nicht. Aber die kommt ja eh weg.


EDIT: Ohh, Sorry. Mein Fehler, hatte das Zitat nicht gesehen oder war nicht geladen. Kam alles hintereinander, dachte du meintest den langen Code.


----------



## Joose (24. Sep 2015)

stylegangsta hat gesagt.:


> Was die Button Eigenschaften betrifft habe ich eine eigene Klasse erstellt. Ist diese überhaupt Korrekt?



Da du von einer eigenen Klasse bezüglich Buttons sprichst und danach auf Korrektheit gefragt hast dachte ich mir das es um die Klasse BtnBayern geht.
Und diese wäre eben nicht korrekt. Aber das tut jetzt nichts zum Thema wer welche meinte.



stylegangsta hat gesagt.:


> Also so mit (String xyz, int x, int z)?



Ja parametisiert, mit dem was du halt brauchst. Aber achte darauf jetzt nicht zuviele Parameter mitzugeben, da ist auch kein schöner Code dann 
(Es gibt Programmierer die meinen 5+ sind schon zuviele Parameter)


----------



## stylegangsta (24. Sep 2015)

Joose hat gesagt.:


> Da du von einer eigenen Klasse bezüglich Buttons sprichst und danach auf Korrektheit gefragt hast dachte ich mir das es um die Klasse BtnBayern geht.
> Und diese wäre eben nicht korrekt. Aber das tut jetzt nichts zum Thema wer welche meinte.
> 
> 
> ...



Vielen Dank, also Samstag Nachmittag dürfte dann hier das Ergebnis stehen.


----------



## stylegangsta (24. Sep 2015)

Danke auch an dich noch mal @thet1983


----------



## strußi (24. Sep 2015)

Joose hat gesagt.:


> JLabel bundesland = *new* JLabel(bundeslandName);
> bundesland = *new* JLabel("Bayern");


Kann es sein, dass es ein c&p fehler ist?


----------



## Joose (24. Sep 2015)

Jap, danke für den Hinweis


----------



## strußi (24. Sep 2015)

Kein Ding. Mir wurde mal gesagt, dass es nicht so angreifend ist, wenn man gefragt wird, ob es ein Fehler ist, wie "Das ist falsch" ;-) deshalb probier ich das weitesgehend umzusetzten.


----------



## stylegangsta (26. Sep 2015)

Guten Morgen Joose,

ich habe deinen Code jetzt mal exemplarisch nur für einen Button erstellt, denke mal, dass ..... die anderen sein sollen. Ist das soweit richtig, wie ich ihn erstellt habe? Hab auch den Aufruf aus der JFrame Klasse nicht hinbekommen. Und ich habe noch ein viel erheblicheres Problem, schreibe ich aber im nächsten Posting.


```
public class BtnBayern {

    public JButton getBtnBayern(BufferedImage Bayern_Wappen) {
        try {
            Bayern_Wappen = ImageIO.read(getClass().getResource("/img/Bayern_Wappen.png"));
        } catch (IOException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
            ex.printStackTrace();
        } catch (IllegalArgumentException ex) {
            System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
            ex.printStackTrace();
        }
       
        JButton btnBayern = new JButton();
        btnBayern.addMouseListener(new MouseEventBayern(btnBayern));
        btnBayern.setContentAreaFilled(false);
        btnBayern.setIcon(new ImageIcon(Bayern_Wappen));
        btnBayern.setFocusPainted(false);
        btnBayern.setBounds(340, 58, 110, 140);
        return btnBayern;
    }

    public JLabel getLblBayern(String lblBayern) {
        JLabel bayern = new JLabel("Bayern");
        bayern.setFont(bayern.getFont().deriveFont(Font.BOLD, 15));
        bayern.setForeground(Color.BLACK);
        bayern.setHorizontalAlignment(SwingConstants.CENTER);
        bayern.setVerticalAlignment(SwingConstants.CENTER);
        bayern.setBounds(340, 138, 110, 140);
        return bayern;
    }
}
```


----------



## stylegangsta (26. Sep 2015)

Unabhängig davon, dass ich Code übersichtlicher gestalten will, funktioniert ja alles soweit. Es erscheint allerdings vor dem Programmstart noch ein SplashScreen. Dieser erscheint auf "DIESEM" Rechner. Testweise habe ich den Code dann auch auf mein Notebook geknallt uns ausprobiert. Funktioniert auch wunderbar der SplashScreen und Rest.

Da ich ja aber sowohl hier zu Hause, als auch in der Schule an dem Programm arbeite, muss ich es ja auch dort auf den Rechnern haben. Das Problem: Auf keinem einzigen Rechner in der Schule erscheint der SplashScreen. Weder, wenn ich es über eclipse, noch über die ausführbare jar Datei starte.

Das Merkwürdige daran ist aber, sobald ich java jre und jdk deinstalliere und noch mal neu installiere erscheint der SplashScreen. Über eclipse und über die jar. Aber nur beim ersten Start nach der neuinstallation von Java. Beim zweiten Start wieder nicht.

eclipse gibt dann ganz viel rote Zeilen aus. Einige, die ich in Erinneurng habe:
java. AWT-Event Queue-0
..... (Native Mehtod), wenn ich das anklicke, steht no source attached
und eclipse meckert über zeile 19 Splachscreen.java
in der Zeile 19 steht folgendes: JFrame frame = new JFrame();<---was gibt es daran zu meckern?

Und außerdem läuft es ja beim aller ersten Start nach java Neuinstallation, also sind die Fehlermeldungen wahrscheinlich gar nicht Ernst zu nehmen und es liegt an etwas ganz anderem. Hab nur nicht die geringste Idee was es sein kann, wenn es einfach nur beim zweiten Start nicht mehr geht. Jemand ne Idee evtl.?


----------



## Joose (26. Sep 2015)

stylegangsta hat gesagt.:


> ich habe deinen Code jetzt mal exemplarisch nur für einen Button erstellt, denke mal, dass ..... die anderen sein sollen. Ist das soweit richtig, wie ich ihn erstellt habe?



Die Änderung zu deinem vorherigen Code ist gerade nur mal das du die Erstellung vom Button und Label in eine eigene Methode ausgelagert. Aber trotzdem für jedes Bundesland eine eigene Klasse.

Trotzdem hast du weiterhin doppelten Code und das ist unnötig.



stylegangsta hat gesagt.:


> ```
> try {
> Bayern_Wappen = ImageIO.read(getClass().getResource("/img/Bayern_Wappen.png"));
> } catch (IOException ex) {
> ...



Das Laden des Images unterscheidet sich nur im Namen der jpg Datei. Sprich 16x hast du dasselbe try/catch Konstrukt nur um jeweils ein anderes Bild zu laden. Den Code von mir im dem vorherigen Post ist eigentlich schon die Lösung!


----------



## stylegangsta (26. Sep 2015)

Joose hat gesagt.:


> Die Änderung zu deinem vorherigen Code ist gerade nur mal das du die Erstellung vom Button und Label in eine eigene Methode ausgelagert. Aber trotzdem für jedes Bundesland eine eigene Klasse.
> 
> Trotzdem hast du weiterhin doppelten Code und das ist unnötig.
> 
> Das Laden des Images unterscheidet sich nur im Namen der jpg Datei. Sprich 16x hast du dasselbe try/catch Konstrukt nur um jeweils ein anderes Bild zu laden. Den Code von mir im dem vorherigen Post ist eigentlich schon die Lösung!


Wäre es zu viel verlangt, dich um den Gefallen zu bitten dein Codebeispiel mit zwei Bundesländern zu posten? Ich habe nur Fragezeichen im Kopf derzeit. Verwirrung.


----------



## strußi (26. Sep 2015)

Es ist nacher nur der Aufruf der Methode, die den Code "verändert", das ist der Sinn bei der Sache. Einmal schreiben 100 aufrufen. nicht 100 mal schreiben und nur einmal aufrufen.

@Joose  ich leih mir mal deinen Code ;-)


Spoiler: Code





```
public JButton getBundeslandButton(String bundeslandName, .....) {
  try {
  Wappen = ImageIO.read(getClass().getResource("/img/" + bundeslandName + ".png"));
  } catch (IOException ex) {
  System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik konnte nicht gelesen werden!");
  ex.printStackTrace();
  } catch (IllegalArgumentException ex) {
  System.out.println("Ausnahmefehler beim Laden einer Grafik!\nEine Grafik wurde nicht gefunden!");
  ex.printStackTrace();
  }
  JButton bundesland = new JButton();
  bundesland.addMouseListener(new MouseEventBayern(bundesland)); // aus der Methode rausziehen? Per reflection laden > "MouseEvent"  + bundeslandName?
  bundesland.setContentAreaFilled(false);
  bundesland.setIcon(new ImageIcon(Wappen));
  bundesland.setFocusPainted(false);
  bundesland.setBounds(.......);
   return bundesland;
}

public JLabel getBundeslandLabel(String bundeslandName, ....) {
   JLabel bundesland = new JLabel(bundeslandName);
  bundesland.setFont(bundesland.getFont().deriveFont(Font.BOLD, 15));
  bundesland.setForeground(Color.BLACK);
  bundesland.setHorizontalAlignment(SwingConstants.CENTER);
  bundesland.setVerticalAlignment(SwingConstants.CENTER);
  bundesland.setBounds(........);
}
```




du hast eine Klasse in der du dein Lable und dein Button erstellst, diese rufst du dann mit
JLabel bayernLabel =Objektreverenz.getBundeslandLabel( "Bayern"); auf. Genaus funktioniert es für den Button JButton bayernButten  =....;
das machst du dann auch für deine anderen Bundesländer. ganz einfach.


----------



## Joose (27. Sep 2015)

Und so schaut der Aufruf dieser Methode aus:


```
JButton btnBayern = getBundeslandButton("Bayern", .....);
```

Bei den "......" handelt es sich um weitere Parameter wie zum Beispiel die Bounds usw.


----------



## strußi (27. Sep 2015)

@Joose das habe ich doch schon oben stehen, blos net in code ;-)


----------



## stylegangsta (29. Sep 2015)

Sorry, dass ich noch keine Antwort oder so geschrieben habe. Habe gar keine email über die neuen Postings gehabt.
Die Letzte war von @strußi der 100 Sachen Beitrag


----------



## stylegangsta (29. Sep 2015)

Joose hat gesagt.:


> Und so schaut der Aufruf dieser Methode aus:
> 
> 
> ```
> ...



Versteh' ich das richtig, dass ich dann auch für jeden Button eine eigene Klasse erstelle?


----------



## Joose (30. Sep 2015)

stylegangsta hat gesagt.:


> Versteh' ich das richtig, dass ich dann auch für jeden Button eine eigene Klasse erstelle?



Nein nicht wirklich, diesen Gedankengang müsstest du mir jetzt erklären 

Du schreibst einfach nur eine Methode (Code siehe oben) und rufst diese Methode 16x mal auf. Mehr als eine Klasse brauchst du dazu theoretisch nicht


----------



## stylegangsta (30. Sep 2015)

Joose hat gesagt.:


> Nein nicht wirklich, diesen Gedankengang müsstest du mir jetzt erklären


Reine Verwirrung, weil ich keinen Plan von OOP habe. Ich kriege alles immer nur Prozedural hin.
Ich weiß, dass ich es tue, aber ich weiß nicht, was ich da tue. Aber es klappt am Ende.


----------



## Joose (30. Sep 2015)

Dann würde ich dir wirklich dringend dazu raten die OOP an ein paar kleinen Konsolenprogrammen zu lernen und üben!
GUI Programmierung ohne Verständnis von OOP wird nicht lange gutgehen. Man sollte den eigenen Code auch verstehen können um möglicherweise auftauchende Fehler zu fixen bzw. Anpassungen vorzunehmen.


----------

