Codeverdoppelung vermeiden

Status
Nicht offen für weitere Antworten.

pc-world

Bekanntes Mitglied
Hallo.

Ich habe eine Methode, die folgendermaßen aussieht:
Code:
	public void setEastPanel(JPanel panel) {
		if (tabs.indexOfTabComponent(eastPanel) != -1) {
			tabs.remove(eastPanel);
		}
		fenster.remove(eastPanel);
		panel.setLayout(new GridBagLayout());
		eastPanel = new JPanel();
		eastPanel.setLayout(new BorderLayout());
		eastPanel.add(BorderLayout.EAST, panel);
		tabs.add("Titel", eastPanel);
		fenster.validate();
	}

Mein Problem ist, dass ich die gleiche Methode noch mit setWestPanel und setCenterPanel und Andere habe.
Doch bei allen ist EAST, WEST, ... und tabs.remove(eastPanel);, tabs.remove(westPanel); usw. anders.

Wie kann ich hier Codeverdoppelung vermeiden (die Wartung regt mich langsam auf...:!:)?
 

L-ectron-X

Gesperrter Benutzer
Schreib doch einfach private (nur in der Klasse sichtbare) Submethoden, mit denen du das Problem in Teilprobleme aufteilst und abarbeiten kannst.
 

Marco13

Top Contributor
Wie KONKRET man das machen kann ... ist schwer zu sagen....

Mit Sicherheit ist bei
Code:
...
         tabs.remove(eastPanel);
      }
      fenster.remove(eastPanel);
...
aber EIN aufruf überflüssig, weil ein Panel nicht in zwei anderen Panels liegen kann.


Irgendwie sieht das ziemlich ... krampfig aus :? Poste vielleicht mal die relevanten Methoden, und beschreib' genauer, WAS dort gemacht werden soll - da gibt's bestimmt eine einfachere Lösung dafür...
 

pc-world

Bekanntes Mitglied
L-ectron-X hat gesagt.:
Schreib doch einfach private (nur in der Klasse sichtbare) Submethoden, mit denen du das Problem in Teilprobleme aufteilst und abarbeiten kannst.
Das ist wahrscheinlich die einfachste Lösung.

Trotzdem hier mein gesamter Code:
Code:
package testPackage;

import java.awt.*;

import javax.swing.*;

public class GUI_neuesFenster {
	private int fensterHoehe = 700;
	private int fensterBreite = 800;
	private static final int fensterHoeheStandard = 700;
	private static final int fensterBreiteStandard = 800;
	private JFrame fenster;
	private JPanel northPanel = new JPanel();
	private JPanel eastPanel = new JPanel();
	private Box southBox;
	private JPanel westPanel = new JPanel();
	private JPanel centerPanel = new JPanel();
	private JLabel ueberschriftLabel = new JLabel();
	private JTabbedPaneWithCloseIcons tabs = new JTabbedPaneWithCloseIcons(); // Erweitert JTabbedPane, noch fügt noch einen Button zum Schließen hinzu.

	private GUI_neuesFenster() {
		fenster = new JFrame();
		fenster.setSize(fensterBreiteStandard, fensterHoeheStandard);
		fenster.setLocationRelativeTo(null);
		fenster.add(tabs);
	}

	public GUI_neuesFenster(String titel) {
		this();
		setTitel(titel);
	}

	public GUI_neuesFenster(String titel, String ueberschrift) {
		this();
		setTitel(titel);
		setUeberschrift(ueberschrift);
	}

	public GUI_neuesFenster(String titel, boolean sichtbar) {
		this();
		setTitel(titel);
		setSichtbar(sichtbar);
	}

	public void setTitel(String titel) {

		fenster.setTitle("Programmname - " + titel);
	}

	public void setSichtbar(boolean sichtbar) {
		fenster.setVisible(sichtbar);
	}

	public void setUeberschrift(String ueberschrift) {
		northPanel = new JPanel();
		ueberschriftLabel = new JLabel(ueberschrift);
		Font fontUeberschrift = new Font("Comic Sans MS", Font.BOLD, 30);
		ueberschriftLabel.setFont(fontUeberschrift);
		northPanel.add(ueberschriftLabel);
		fenster.add(BorderLayout.NORTH, northPanel);
	}

	public void setFensterHoehe(int hoehe) {
		if (hoehe != 0) {
			fenster.setSize(fensterBreite, hoehe);
		} else {
			fenster.setSize(fensterBreite, fensterHoeheStandard);
		}
	}

	public void setFensterBreite(int breite) {
		if (breite != 0) {
			fenster.setSize(breite, fensterHoehe);
		} else {
			fenster.setSize(fensterBreiteStandard, fensterHoehe);
		}
	}

	public void setEastPanel(JPanel panel) {
		if (tabs.indexOfTabComponent(eastPanel) != -1) {
			tabs.remove(eastPanel);
		}
		fenster.remove(eastPanel);
		JPanel panel2 = new JPanel();
		panel2.setLayout(new GridBagLayout());
		panel2.add(panel);
		eastPanel = new JPanel();
		eastPanel.setLayout(new BorderLayout());
		eastPanel.add(BorderLayout.EAST, panel);
		tabs.add("Titel", eastPanel);
		fenster.validate();
	}

	public void schliessenBeimSchliessen() {
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}

Diese Klasse soll mir dabei helfen, ein Fenster mit Tabs zu erstellen (das mit den Tabs ist noch nicht ganz fertig).
Und jetzt brauche ich nicht nur setEastPanel(), sondern auch setCenterPanel(), setWestPanel() usw. (die hab' ich hier erst gar nicht reingeschrieben, die sind sowieso nicht aktuell :)).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Redundanz mit Array vermeiden. Java Basics - Anfänger-Themen 42
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
I Input/Output 3 Werte in Datei schreiben, duplikate vermeiden Java Basics - Anfänger-Themen 4
T doppelten Code vermeiden Java Basics - Anfänger-Themen 1
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
D Wie "unchecked cast" hier vermeiden? Java Basics - Anfänger-Themen 2
D Bei eingeben von Zahlen den Zeilensprung vermeiden Java Basics - Anfänger-Themen 3
Haave EAN-13-Prüfziffer: Vermeiden von Eingaben mit mehr/weniger als 12 Ziffern Java Basics - Anfänger-Themen 3
C Arrays vermeiden?? Java Basics - Anfänger-Themen 13
M Cast vermeiden Java Basics - Anfänger-Themen 11
B Wie Code-Redundanz vermeiden? Java Basics - Anfänger-Themen 2
A "Schmutziges Programmieren" vermeiden Java Basics - Anfänger-Themen 10
P Zeilnumbruch vermeiden bei einer Tabelle *hilfe* Java Basics - Anfänger-Themen 11
E Vermeiden,dass mehrere Instanzen eines Java-Programms laufen Java Basics - Anfänger-Themen 2
E Rekursion vermeiden Java Basics - Anfänger-Themen 9
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
S Überladen von Funktionen vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben