Swing Von einem Controller aus View-Elemente ändern

Michoel

Aktives Mitglied
Hallo Forum,
ich hoffe, dass dies meine letzte Frage bezüglich grafischer Oberflächen ist.

Ich erstelle meine Masken mit dem GUI-Builder von Netbeans.

Ich habe nun eine Mainmaske erstellt (abgeleitet von JFrame)
Dann habe ich dort zum Beispiel ein JTabbedPane mit mehreren Panels.

Nun frage ich mich, wie ich vom Controller aus (Der Controll hat die Mainmaske als Instanz und hat die Mainmaske auch geladen und auf Visible gesetzt), bestimmte Panels ein- oder ausblenden kann, wenn sie nur für einen bestimmten Userrecht sichtbar sein sollen? Bzw. wie ich zu dieser Mainmaske evtl. neue Panels lege oder so? (Dialoge für die Mainmaske laden war glaub net schwer, das muss ich mir nochmal anschauen)

Zur Not, muss ich dann von der View (da die View den Controller kennt), vom Controller die User-Rechte holen und jeweils mit IF-Abfragen dann dementsprechend bestimmte Panels initialisieren oder nicht (Wobei das glaub nicht so gut wäre, da solch ein Code sicherlich nicht in der View zu suchen haben ne?)

Grüße
 

Tharsonius

Bekanntes Mitglied
Ich habe sowas ähnliches mal gemacht. Vielleicht nicht ideal aber ein Ansatz:

1. Ich habe mir eine Klasse geschrieben, die Informationen für mich kapselt. Diese hat Menütexte etc. aufgenommen.
2. Im Controll habe ich abhängig von den Rechten verschiedene Objekte meiner Klasse erstellt und die Informationen passend dort eingetragen.
3. Ich habe alle Objekte in eine Liste gestopft und diese an die View übergeben.
4. Die View hat die Liste ausgewertet und alles hinzugefügt, was in der Liste stand.

Haupteinsatz war ein Buttongesteuerter Ablauf. Ich hatte in der View zig Buttons und habe die der Reihe nach belegt, mit den Texten aus den Objekten. Alle nicht genutzten Buttons habe ich dann unsichtbar gelassen.

Auf diese Art habe ich mir ein Menü aufgebaut, was Elemente abhängig von Benutzerrechten enthalten hat.

Hier mal das Anzeigefenster des Menüs
Java:
package basis.fenster;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.LinkedList;
import basis.*;

public final class BereichAuswahl
extends InternesBasisFenster
implements ActionListener, AdjustmentListener
{
	private static final long serialVersionUID = 1L;
	private JButton wahl0;
	private JButton wahl1;
	private JButton wahl2;
	private JButton wahl3;
	private JButton wahl4;
	private JButton wahl5;
	private JButton wahl6;
	private JButton wahl7;
	private JButton wahl8;
	private JButton wahl9;
	private JScrollBar scrollbar;
	private int offset;
	private LinkedList<BereichFunktionListeElement> auswahlliste;
	
	public BereichAuswahl(Sitzung session, LinkedList<BereichFunktionListeElement> auswahlliste)
	{
		super("Auswahl des Bereichs", session);
		this.auswahlliste = auswahlliste;
		setSize(370, 615);
		fuelleFenster();
		setClosable(false);
		offset = 0;
		showButtons();
	}

	private final void fuelleFenster()
	{
		setLayout(null);
		wahl0 = new JButton();
		wahl0.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl0.setSize(300, 40);
		wahl0.setLocation(10, 10);
		wahl0.addActionListener(this);
		wahl0.setActionCommand("wahl0");
		add(wahl0);
		wahl1 = new JButton();
		wahl1.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl1.setSize(300, 40);
		wahl1.setLocation(10, 60);
		wahl1.addActionListener(this);
		wahl1.setActionCommand("wahl1");
		add(wahl1);
		wahl2 = new JButton();
		wahl2.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl2.setSize(300, 40);
		wahl2.setLocation(10, 110);
		wahl2.addActionListener(this);
		wahl2.setActionCommand("wahl2");
		add(wahl2);
		wahl3 = new JButton();
		wahl3.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl3.setSize(300, 40);
		wahl3.setLocation(10, 160);
		wahl3.addActionListener(this);
		wahl3.setActionCommand("wahl3");
		add(wahl3);
		wahl4 = new JButton();
		wahl4.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl4.setSize(300, 40);
		wahl4.setLocation(10, 210);
		wahl4.addActionListener(this);
		wahl4.setActionCommand("wahl4");
		add(wahl4);
		wahl5 = new JButton();
		wahl5.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl5.setSize(300, 40);
		wahl5.setLocation(10, 260);
		wahl5.addActionListener(this);
		wahl5.setActionCommand("wahl5");
		add(wahl5);
		wahl6 = new JButton();
		wahl6.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl6.setSize(300, 40);
		wahl6.setLocation(10, 310);
		wahl6.addActionListener(this);
		wahl6.setActionCommand("wahl6");
		add(wahl6);
		wahl7 = new JButton();
		wahl7.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl7.setSize(300, 40);
		wahl7.setLocation(10, 360);
		wahl7.addActionListener(this);
		wahl7.setActionCommand("wahl7");
		add(wahl7);
		wahl8 = new JButton();
		wahl8.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl8.setSize(300, 40);
		wahl8.setLocation(10, 410);
		wahl8.addActionListener(this);
		wahl8.setActionCommand("wahl8");
		add(wahl8);
		wahl9 = new JButton();
		wahl9.setFont(new Font("SansSerif", Font.BOLD, 24));
		wahl9.setSize(300, 40);
		wahl9.setLocation(10, 460);
		wahl9.addActionListener(this);
		wahl9.setActionCommand("wahl9");
		add(wahl9);
		scrollbar = new JScrollBar();
		scrollbar.setSize(30, 490);
		scrollbar.setLocation(320, 10);
		scrollbar.addAdjustmentListener(this);
		add(scrollbar);
		JButton abmeldebutton = new JButton("Abmelden");
		abmeldebutton.setFont(new Font("SansSerif", Font.BOLD, 24));
		abmeldebutton.setSize(200, 60);
		abmeldebutton.setLocation(80, 510);
		abmeldebutton.addActionListener(this);
		abmeldebutton.setActionCommand("logout");
		add(abmeldebutton);
	}

	private final void showButtons()
	{
		int menge = auswahlliste.size();
		BereichFunktionListeElement element;
		if(menge < 10)
		{
			wahl0.setVisible(false);
			wahl1.setVisible(false);
			wahl2.setVisible(false);
			wahl3.setVisible(false);
			wahl4.setVisible(false);
			wahl5.setVisible(false);
			wahl6.setVisible(false);
			wahl7.setVisible(false);
			wahl8.setVisible(false);
			wahl9.setVisible(false);
		}
		if(menge < 11)
		{
			scrollbar.setVisible(false);
		}
		else
		{
			scrollbar.setMinimum(0);
			scrollbar.setMaximum(menge);
			scrollbar.setVisibleAmount(10);
			scrollbar.setValue(offset);
		}
		int i = offset;
		for(int j = 0; i < menge; i++, j++)
		{
			element = auswahlliste.get(i);
			switch(j)
			{
				case 0:
					wahl0.setText(element.getAnzeigetext());
					wahl0.setVisible(true);
					break;
				case 1:
					wahl1.setText(element.getAnzeigetext());
					wahl1.setVisible(true);
					break;
				case 2:
					wahl2.setText(element.getAnzeigetext());
					wahl2.setVisible(true);
					break;
				case 3:
					wahl3.setText(element.getAnzeigetext());
					wahl3.setVisible(true);
					break;
				case 4:
					wahl4.setText(element.getAnzeigetext());
					wahl4.setVisible(true);
					break;
				case 5:
					wahl5.setText(element.getAnzeigetext());
					wahl5.setVisible(true);
					break;
				case 6:
					wahl6.setText(element.getAnzeigetext());
					wahl6.setVisible(true);
					break;
				case 7:
					wahl7.setText(element.getAnzeigetext());
					wahl7.setVisible(true);
					break;
				case 8:
					wahl8.setText(element.getAnzeigetext());
					wahl8.setVisible(true);
					break;
				case 9:
					wahl9.setText(element.getAnzeigetext());
					wahl9.setVisible(true);
					break;
				default:
					break;
			}
		}
	}

	public final void  adjustmentValueChanged(AdjustmentEvent event)
	{
		offset = scrollbar.getValue();
		showButtons();
	}

	public final void actionPerformed(ActionEvent event)
	{
		String action = event.getActionCommand();
		if(action.equals("wahl0"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl1"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 1);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl2"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 2);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl3"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 3);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl4"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 4);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl5"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 5);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl6"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 6);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl7"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 7);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl8"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 8);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("wahl9"))
		{
			BereichFunktionListeElement element = auswahlliste.get(offset + 9);
			session.execute(element.getBereich(), element.getFunktion());
			return;
		}
		if(action.equals("logout"))
		{
			session.execute("Basis", "Logout");
			return;
		}
	}
}
 
Zuletzt bearbeitet:

Michoel

Aktives Mitglied
Hey Tharsonius,
vielen Dank, das ist voll lieb.
Du kriegst also in der View Objekte und wertest das dort aus. Also könnte der Controller bei mir zum Beispiel ein User der View übergeben und die View wertet aus, je nach Recht von dem User, ob er ein Button einblendet oder nicht.

Wobei, ich ein Button ein- und ausblenden auch vom Controller aus machen könnte, indem ich in der View eine Methode schreibe, um speziell ein Button ein oder auszublenden.


Was ich mich aber frage, ob ich vom Controller zum Beispiel der Mainmaske irgendwie einen Panel (Eigene Klasse) übergeben kann, den er dann komplett oder in einem eigenen Panel anzeigt. Oder, ich übergebe vom Controller so eine Auswahlliste mit OK Button an die Mainmaske, entweder, indem ich das im Controller erstelle und das der Mainmaske gebe zum anzeigen oder eine eigene Klasse, die nur dafür zuständig ist, eine Auswahlliste zu zeigen.

Vielleicht mach ich mir das auch nur unnötig kompliziert, bzw. ist es garnicht, nur dass ich es nicht checke :)

Grüße
 

Tharsonius

Bekanntes Mitglied
Na ja, so wirklich kompliziert ist das nicht.
Ich würde alles in die View stopfen, was irgendwie mit der Anzeige zu tun hat. Also alle Anzeigeoptionen kommen in die View. Der Controller hingegen entscheidet, was angezeigt werden soll und bastelt da irgendwas, abhängig von den Benutzerrechten zusammen.

Und was auch immer der Controller zusammen gestrickt hat, das gibt er an die View und die verarbeitet das in soweit, als dass es abhängig davon die entsprechenden Anzeigeoptionen wählt und anzeigt.


In meinem Beispiel hat die View einen Stapel Buttons, die angezeigt werden können. Die Buttons haben eine Aufschrift und auf Druck soll irgendwas passieren. Der Controller hat dazu dann entscheiden, abhängig von den rechten, was der Benutzer sehen soll und welche Buttons verfügbar sein sollen. Ich habe dazu eine Klasse geschrieben, in der ich den Buttontext und den Funktionsnamen aufnehmen kann. Der Controller hat nun abhängig von den Rechten die Menüeinträge erzeigt, also eine Menge Objekte mit den Button Namen und den zugehörigen Funktionsnamen. Das alles in besagte Liste und ab an die View.

Die View wiederum macht nun nix als stumpf die Liste abzuarbeiten und so viele Buttons wie nötig anzuzeigen. Sollten die vorhandenen nicht ausreichen gibts einen Scrollbalken. Bei Buttonklick wiederum nimmt die View den Funktionsnamen aus dem zugehörigen Objekt und schickt dies an den Controller. Der wiederum verarbeitet das dann.




Letztendlich ist es Deine Entscheidung, ob Du vom Controller die Methoden zum Anzeigen aufrufst oder ob Du alles kapselst und an die View übergibst. Ist so ein bischen Designfrage und ich denke Geschmackssache.
Bei mir sind die Menüs statisch gewesen. Die rechte des Users ändern sich nicht, also braucht sich das Menü nicht zu ändern, solange der User eingeloggt ist (beim Ausloggen wird das Fenster geschlossen).

Wenn sich aber der Inhalt des angezeigten Fensters ändern soll, weil der User beispielsweise irgendwas macht, dann wäre es sicher sinnvoller das in Form von aufrufbaren Methoden zu realisieren.
 

Michoel

Aktives Mitglied
Hi Tharsonius,
vielen Dank. Da wird mir langsam auch alles klar.
Hab zum Beispiel eine DialogKlasse für eine bestimmte Maske. Dem Dialog wird dann der Frame übergeben, dann funktioniert alles mal schon ganz gut.


Meine nächste Aufgabe ist es, dass ich zum Beispiel mehrere User habe (Id, Name usw.) im Controller,die muss ich jetzt zur Anzeige bringen auf einem Panel in der Mainmaske. Ich könnte jetzt den User an die View schicken, die das auswertet oder im Controller eine Combobox erstellen und die Combobox an die View schicken. Wie herum ist ja nun egal, da es mehr Geschmackfrage ist.

Ich frage mich nur, wie ich Dynamisch so eine Combobox erstelle, wo ich dann später die Userid bei eine Aktion der Combobox übergebe.

Besser als ne Combobox wäre aber glaube ich sogar, dass ich die Namen in einer Schleife aufliste und rechts davon immer ein RadioButton, wo ich dann einen User markieren und durch einen Button irgend eine Aktion auslösen kann.

Das Problem aber bei Radiobuttons, dass ich irgendwie jedes einzelne Radiobutton dann später abfragen muss, was geklickt wurde, sprich, ob das RadioButton ein Object[] übergeben hat oder null (wenn nicht geklickt). Aber nach der Aktion weiß ich ja nicht, wieviel Buttons es gibt,da die Userliste ja dynamisch (verschieden lang sein kann)

Da stehe ich grad noch am Schlauch :rtfm:

Grüße
 

Tharsonius

Bekanntes Mitglied
Ich würde eine Combo Box in der View erstellen und im Controller nur die jeweiligen Einträge. Die Einträge in eine Liste stecken und an die View übergeben. Die View wiederum legt die in die Combo Box.


Wenn Du das per Radio Buttons machen willst, dann wäre denkbar, dass Du (analog zu meiner geposteten Klasse oben) einen Bereich mit beispielsweise 10 Radio Buttons machst. Diese sind erst mal alle unsichtbar.

Erstell Dir dann dazu eine Klasse RadioButtonListeElement, die einen String aufschrift enthält und dazu einen String funktion.

Im Controller erstellst Du so viele Objekte der Klasse RadioButtonListeElement, wie Du Radio Buttons haben willst. In jedes Objekt stopfst Du die Aufschrift und einen String für die Funktion beispielsweise. Daraus erstellst dann eine Liste, wo die Elemente in der Reihenfolge drin stehen wie sie auch angezeigt werden sollen. Diese Liste gibst an die View.

Die View wiederum hat beispielsweise 10 Radio Buttons. Diese werden jetzt der Reihe nach mit Aufschrift gefüllt, in dem Du die Liste durchgehst und die Aufschrift der einzelnen Elemente nimmst. Hast Du mehr als 10 Elemente blendest eine Scrollbar ein, bei weniger als 10 Elementen bleiben die ungenutzen Radio Buttons unsichtbar.

Wenn ein Button ausgewählt wird, dann merkst Dir die Position, beim absenden übergibst dann den zugehörigen Funktionsstring aus dem Listenelement an den Controller.

Der Controller wiederum hat einen Parser, der abhängig vom String entscheidet was genau zu tun ist.


Das ist jetzt nur eine Möglichkeit, dazu könntest aber mein Beispiel von oben fast 1:1 übernehmen. Musst halt nur die Buttons durch RadioButtons ersetzen. Ich habe da nur halt keinen Layout Manager verwendet und es ist ein JInternalFrame. Das aber wiederum sollte man problemlos anpassen können wenn nötig.

Ich geb Dir passen zur oben genannten Klasse mal die Klasse BereichFunktionListeElement
Java:
package basis;

public final class BereichFunktionListeElement
{
	private String anzeige;
	private String bereich;
	private String funktion;
	
	public BereichFunktionListeElement(String anzeige, String bereich, String funktion)
	{
		this.anzeige = anzeige;
		this.bereich = bereich;
		this.funktion = funktion;
	}
	
	public final String getAnzeigetext()
	{
		return anzeige;
	}
	
	public final String getBereich()
	{
		return bereich;
	}

	public final String getFunktion()
	{
		return funktion;
	}
}

Und dazu noch einen Auszug aus der Klasse Sitzung (Das ist der Controller)

Java:
	public final void execute(String bereich, String funktion)
	{
		if(bereich.equals("Basis"))
		{
			if(funktion.equals("Logout"))
			{
				logout(true);
				return;
			}
			return;
		}
		verwalter.execute(bereich, funktion);
	}

Wie der verwalter aufgebaut ist sollte klar sein, der vermittelt zwischen meinen anderen Programmbereichen und leitet das ggf an die weiter, die es betrifft.

Alles in allem ists erweiterbar konzipiert, weil ich jederzeit eine Funktion ergänzen kann ohne alles umstrukturieren zu müssen.


Edit: Um zu entscheiden ob irgendwas gedrückt wurde oder was genau gedrückt wurde könntest eine variable selected einfügen, in der Du Dir merkst was aktiviert wurde, wenn nix aktiviert ist ist die variable halt null oder so. selected brauchst auch, wenn Du einen Scrollbalken einpflegst, und der ausgewählte sich mit scrollen soll.
 
Zuletzt bearbeitet:

Michoel

Aktives Mitglied
Hi Tharsonius,

ich habe mir dein Beispiel nun genauer angeschaut. Super dankeschön.
In deinem Beispiel ist mir aber nirgends aufgefallen, wie deine View Buttons erstellt, wenn es mehr als 10 gelifert bekommt. Wie dem auch sei.



Mein jetziges Problem ist derzeit.

1. Ich habe in einem Vector User drin in einer View "UserDialog"

int i=0;
while (i<vector.size()) {
User tmp = vector.elementAt(i);
comboBoxModel.addElement(tmp.getFirstname()+" "+tmp.getLastname());
i++;
}
comboboxPM.setModel(comboBoxModel);

Je nach Size füge ich in ComboBoxmodel die einzelnen Benutzer rein.
Drunter ist ein Button. Wenn geklickt wurde geht ein Event an eine Listenerklasse. Die Listenerklasse ruft dann beim Controller eine bestimmte Methode. Der Controller geht den "UserDialog"

Nun sollte "UserDialog" Methoden anbieten, wo ich die Textfelder vom Controller auslesen kann. Bei Textfeldern klappt alles.
Wie mache ich das nun bei der Combobox, wenn ich die Usernamen als Auswahl zeigen will, aber, wenn etwas markiert ist, er eine UserID zurückgeben soll. Kann man zu dem was die ComboBox anzeigt auch einen Value irgendwie hinterlegen?



2. Noch eine Kleinigkeit. Gibt es Beispiel, wo man in einem Try-Block wiederum eine Try einfügt? (Macht eigentlich kein Sinn ne?)

3. Irgendwie bin ich ein Freund von Exceptions geworden. Beispiel. Ich will einen Benutzer in die Datenbank einfügen oder irgendwas anderes und gebe die Anfrage an ein Model. Oder will etwas selectieren und erwarte ein Ergebnis. Ich könnte, wenn nichts vorhanden ist, zwar eine NULL zurückgeben. Könnte man jedoch in dem letzten Beispiel, wenn kein Ergebnis vorhanden ist, auch eine Exception an die Höhere Ebene (Bsp. Controller) geben, dass kein Ergebnis vorhanden ist oder so? mit e.getMessage kann man irgendwie mehr anfangen, anstatt dass man null zurückgibt oder wenn irgendwas nicht klappt, wie es sein sollte, auch gleich eine Message erhält, worum es ging :)

Grüße
 

Michoel

Aktives Mitglied
Ich komme bzgl. der Combobox etwas näher. Ich muss wohl einen eigenen Renderer schreiben:


Code:
public class ComboRenderer extends JLabel implements ListCellRenderer {


    /**
     * Constructor.
     */
    public ComboRenderer() {
        setOpaque(true);
    }

    /**
     * {@inheritDoc}
     */
    public final Component getListCellRendererComponent(final JList list,
            final Object value, final int index, final boolean isSelected,
            final boolean cellHasFocus) {

        String text = "";

        if (value instanceof User) {
            User user = (User) value;
            text = user.getFirstname();
        }

        setText(text);

        return this;
    }
}

Jetzt frage ich mich, wie ich nun die ComboBox erstelle.
Erst ein Exemplar von dem Renderer. Den Renderer gebe ich dann der Combobox. Wo gebe ich nun die einzelnen Listen-Elemente, bzw. praktisch einen User, bzw. Object?
 

Tharsonius

Bekanntes Mitglied
In deinem Beispiel ist mir aber nirgends aufgefallen, wie deine View Buttons erstellt, wenn es mehr als 10 gelifert bekommt. Wie dem auch sei.
Ich habe auf der View 10 Buttons. Mehr werden nie dargestellt.
Wenn mehr Einträge in der Liste sind, dann wird ein Scrollbalken angezeigt.
Wenn jetzt herunter gescrollt wird, dann werden die Buttonaufschriften in meinem beispiel alle einen nach oben geschoben.

Ich kann Dir, wenn es Dir hilft, auch eine andere Klasse geben, die das ganze mit Labels macht, die anklickbar sind, farblich hinterlegt werden etc. Ist das selbe Prinzip nur deutlich komplexer. Würde ich Dir dann als PM schicken, wenn gewünscht.


Kann man zu dem was die ComboBox anzeigt auch einen Value irgendwie hinterlegen?
Spontan würde ich mir eine Klasse schreiben, die den Anzeigenamen und die besagte value enthält. Wenn Du die methode toString() überschreibst kannst darüber bestimmen, was als Text in der ComboBox angezeigt wird. Bei der Auswertung holst Dir das passende Objekt und ziehst Dir das Value raus, was Du brauchst. Wenn Du die Klasse selber geschrieben hast, dann hast Du ja einfluss darauf.


2. Noch eine Kleinigkeit. Gibt es Beispiel, wo man in einem Try-Block wiederum eine Try einfügt? (Macht eigentlich kein Sinn ne?)
Hm, hab das nie ausprobiert. Könnte mir denken dass sowas geht. Könnte mir denken dass sowas durchaus Unter Umständen Sinn macht. Ich habs bisher nie verwendet.



Bezüglich Exceptions, Du kannst doch selber eine werfen. Soweit ich weiss geht das mit dem Befehl throw.
Musst dann halt eine neue Exception erstellen und in der übergeordneten musst die entsprechend fangen.
Denkbar wäre auch, dass Du Dir eine eiegene Exception schreibt.

Bedenken solltest Du aber stets, dass in Datenbanken der Wert null durchaus ein gültiger Wert ist.
 

Michoel

Aktives Mitglied
hey Tharsonius,
vielen Dank. Die Combobox läuft mal, wie es laufen soll.
Derzeit frage ich mich noch, ob man auf einem Panel HTML formatierten Text ausgeben kann=
Irgendwo hatte ich das glaub gesehen, shön mit Formatierng, Zeilumbruch usw.

Grüße
 

Michoel

Aktives Mitglied
Das mit HTML habe ich auch hingekriegt. Ich kann in einem Label als Text einfach html eingeben, das passt.


Derzeit frage ich mich, wie ich bei einem JTabbedPane einen Register ooben von einem anderen Register aus anwählen kann, so dass er in den Vordergrund rückt?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
F JavaFX JavaFX - Hintergrundmusik in einem seperatem Task/Service AWT, Swing, JavaFX & SWT 6
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Dreieck in einem Kreis??? AWT, Swing, JavaFX & SWT 1
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
J Swing unterschiedliche Inhalte in einem JFrame AWT, Swing, JavaFX & SWT 3
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
S Punkt finden der in einem Shape liegt..? AWT, Swing, JavaFX & SWT 11
A Swing Externe Klassen aufrufen und in einem bereits vorhandenen Container einfügen AWT, Swing, JavaFX & SWT 0
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
J RadioButton-Gruppe in Kombination mit einem Button AWT, Swing, JavaFX & SWT 6
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
V Fenster in einem Fenster anordnen AWT, Swing, JavaFX & SWT 7
E Alles in einem Fenster AWT, Swing, JavaFX & SWT 5
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben