User Interface aufteilen?

Status
Nicht offen für weitere Antworten.
A

Angiii

Gast
Hallo,

ich bastle gerade an einem Java-Applet mit Eclipse und mit Hilfe des Visual Editors. Um den Überblick zu behalten, will ich meinen Applet-Code in mehrere Dateien aufteilen. Hauptelement des Applets ist eine JTabbedPane. Die einzelnen Tabs befinden sich jeweils in einzelnen Klassen und werden dann in der JTabbedPane zusammengeführt. Vom Grundaufbau funktioniert dies auch. Im ersten Tab befindet sich Buttons, die die Kommunikation zum Endgerät herstellen (z.B. Connect). In den restlichen Tabs sollen sich verschiedene Eigenschaften des Geräts einstellen lassen.

Jedoch habe ich Probleme bei der Interaktion von Funktionen zwischen den einzelnen Tabs (die Tabs arbeiten nicht zusammen). Nun will ich zum Beispiel in Tab1 eine Verbindung zum Gerät herstellen. Tab2 soll die Verbindung von Tab1 nutzen, um Nutzdaten zu übertragen. Jedoch schaffe ich es nicht, dass Tab2 auf die Verbindung von Tab1 zugreifen kann. Wenn ich das gesamte Applet in nur einer Klasse mache, stellt sich das Problem nicht, jedoch wird mir das zu unübersichtlich.

Ich dachte ich könnte mein Ziel durch Vererbung (tab2 extends tab1) erreichen, leider funktioniert das nicht. Wäre toll wenn mir jemand einen Tipp geben könnte! Arbeite erste seit zweieinhalb Wochen mit Java und habe noch nicht alle Geheimnisse dieser Sprache durchschaut (komm eigentlich aus der C-Ecke ;-) ).

Hier mal ein Auszug meines Codes:

Code:
public class tab1  {
	
	public JPanel jPanelTab1 = null;  
	private JButton Connect = null;
	
	public Communication XPort;  //  In der Klasse Communication befindet sich alles was zum Verbindungsaufbau und zur Datenübertragung benötigt wird.

	public JPanel getJPanelTab1() {
		if (jPanelTab1 == null) {
			jPanelTab1 = new JPanel();
			jPanelTab1.setLayout(null);
		        jPanelTab1.add(getConnect(), null);

		}
		return jPanelTab1;
	}

        // Durch das Drücken des Connect Buttons auf Tab1 wrid eine Verbindung hergestellt
	private JButton getConnect() {
		if (Connect == null) {
			Connect = new JButton();
			Connect.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
				XPort = new Communication();	// <---------							
					try {
						XPort.connect("192.168.68.146", 10001); // öffnet Verbindung zu XPort
					} catch (Exception Ex) {
						System.out.println("Error while connecting: " + Ex);
					}
			
				}
			});
		}
		return Connect;
	}
	
}


public class tab2 extends tab1{
		
	private byte functionID, value;
		
	private JPanel jPanelTab2 = null;  //  @jve:decl-index=0:visual-constraint="152,64"
	private JSlider BackLight = null;
			
	public byte [] sendbuf(){
		
		byte[] array = new byte [3];
		
		array[0] = -11
		array[1] = 0x08;
		array[2] = value;
			
		return array;	 
	}
	

	public JPanel getJPanelTab2() {
		if (jPanelTab2 == null) {
			jPanelTab2 = new JPanel();
			jPanelTab2.setLayout(null);
			jPanelTab2.add(getStart(), null);
			
		}
		return jPanelTab2;
	}
	
     
	private JSlider getBackLight() {
		if (BackLight == null) {
			BackLight = new JSlider(JSlider.HORIZONTAL,1,100, 20); // Slider-Wertebereich
			
			BackLight.addChangeListener(new javax.swing.event.ChangeListener() {
			
                        public void stateChanged(javax.swing.event.ChangeEvent e) {
					
			byte[] sendarray = sendbuf();	
			value = (byte) BackLight.getValue();
					
			try{
			XPort.send(sendarray);   // Überträgt Array an XPort, soll Verbindung aus Tab1 nutzen!
			
			} catch (Exception ex){System.out.println("txtfehl");}
				
				
				}
			});
		
		}
		return BackLight;
	}

}
 

Wildcard

Top Contributor
Grundsätzlich brauchst du dafür Referenzen. Nun macht es im Allgemeinen wenig sinn wenn jeder Tab eine Referenz auf die anderen hat.
Ein Vorschlag wäre zum Beispiel ein Modell zu definieren, da sich das bei dir schwer nach einer mehrstufigen Konfiguration anhört.
Jeder Tab bekommt das modell, der eine setzt das 'Gerät', der nächste macht etwas damit.
Wenn eine chronologische Reihenfolge der Arbeitsschritte vorliegt, würde ich allerdings eher zu einem Wizard tendieren.
 
G

Guest

Gast
Danke für deine schnelle Antwort! Auch wenn ich leider bisher noch nichts von einem Modell mit mehrstufiger Konfiguration oder einem Wizard gehört habe. Wie kompliziert ist sowas?
 

Wildcard

Top Contributor
Mit Modell meine ich Datencontainer. Das hat dann von mir aus einen getter und setter für 'Endgerät' was immer das auch ist.
Damit schleifst du nur die Nutzdaten durch die GUI anstatt die GUI selbst durchzuschleifen.
Was ein Wizard grundsätzlich ist weißt du, oder?
Ob für deinen Fall Tabs, oder ein Wizard das richtige ist, musst du selbst wissen.
Nach meinem Empfinden ist ein Wizard chronologisch geordnet, während Tabs nahelegen das die Reihenfolge der Bearbeitung dem Benutzer freigestellt ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
R Swing User tippt in unsichtbares JTextField AWT, Swing, JavaFX & SWT 3
P Dynamische Seite zum basteln für den User AWT, Swing, JavaFX & SWT 8
C Swing JTattoo - Look and Feel für ALLE User AWT, Swing, JavaFX & SWT 5
A SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist AWT, Swing, JavaFX & SWT 5
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
Y DatenEvents in JTable bei User-Edit AWT, Swing, JavaFX & SWT 2
jgh Speichern von User-GUI-Einstellungen AWT, Swing, JavaFX & SWT 2
C Vom User angelegte Spaltenanordung rückgängig machen AWT, Swing, JavaFX & SWT 2
A Swing Drag and Drop TreeNode User Object AWT, Swing, JavaFX & SWT 3
N JTable: Informiert werden, wenn User eine Zelle editiert hat AWT, Swing, JavaFX & SWT 2
J user fadein/fadeout benachrichtigung AWT, Swing, JavaFX & SWT 3
P User-Rechte fuer Frames ueberpruefen und deren Schliessung AWT, Swing, JavaFX & SWT 4
M Nutzer interface Programmieren AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
K Fehlermeldung mit Interface AWT, Swing, JavaFX & SWT 9
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
G JavaFX Nutzen von Interface Callback<P,R> AWT, Swing, JavaFX & SWT 2
S Interface Printable AWT, Swing, JavaFX & SWT 5
K Verständnisproblem mit Interface AWT, Swing, JavaFX & SWT 3
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
C Interface für JButtons,... AWT, Swing, JavaFX & SWT 7
B In eine Konsolenanwendung ein Interface einbinden AWT, Swing, JavaFX & SWT 5
J instanceof von einem Interface und aufrufen der Methoden AWT, Swing, JavaFX & SWT 5
S Sowas wie ein drawable-interface? AWT, Swing, JavaFX & SWT 3
B Scrollable - Wie benutzt man das Interface richtig? AWT, Swing, JavaFX & SWT 5
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
H actionPerformed aufteilen AWT, Swing, JavaFX & SWT 12
T Bild aufteilen/manipulieren AWT, Swing, JavaFX & SWT 3
M Fenster aufteilen, aber mit welchem LayoutManager? AWT, Swing, JavaFX & SWT 10
B Eine Spalte in drei verschiedenlange Spalten aufteilen AWT, Swing, JavaFX & SWT 2
EagleEye GUI in mehrere Dateien aufteilen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben