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 icon_wink.gif ).
Hier mal ein Auszug meines Codes:
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 icon_wink.gif ).
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;
}
}