Hi zusammen,
ich weiß, das Thema wurde schon öfter besprochen, aber trotzdem kapier ich's nicht...
Ich hab eine Klasse InPanel1.java und eine Klasse Funktionen.java. Nun gibt es in der Klasse InPanel1 eine Variable (bisher nur ein Test-String, später soll es aber eine HashMap sein), auf die ich von der Klasse Funktionen lesend, wie auch schreibend gerne zugreifen können möchte. Und was soll ich sagen, ich scheiter schon am lesen des Strings .
InPanel1.java
Funktionen.java
Wenn ich diesen Code ausführen will, dann hagelt es leider nur folgendes:
Exception in thread "main" java.lang.StackOverflowError
at java.util.Hashtable.get(Hashtable.java:336)
at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:140)
at javax.swing.UIDefaults.get(UIDefaults.java:128)
at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:37)
at javax.swing.UIDefaults.getColor(UIDefaults.java:378)
at javax.swing.UIManager.getColor(UIManager.java:590)
at javax.swing.LookAndFeel.installColors(LookAndFeel.java:58)
at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:92)
at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:49)
at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:39)
at javax.swing.JComponent.setUI(JComponent.java:650)
at javax.swing.JPanel.setUI(JPanel.java:131)
at javax.swing.JPanel.updateUI(JPanel.java:104)
at javax.swing.JPanel.(JPanel.java:64)
at javax.swing.JPanel.(JPanel.java:87)
at javax.swing.JPanel.(JPanel.java:95)
at InPanel1$Weiss.(InPanel1.java:32)
at InPanel1.(InPanel1.java:8)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)...
(ab hier immer wieder die gleichen beiden Zeilen)
Was mache ich hier falsch?
Die beiden javas da oben sind nur eine kleine Testumgebung, denn eigentlich hab ich eine java mit der main-class, 4 weitere javas mit 4 verschiedenen Tabs und eben so eine Funktionen.java.
In jedem dieser 4 Tabs kann der User prinzipiell erst mal das gleiche machen, jedoch unterscheiden sich diese 4 Tabs durch den GUI-Aufbau und ein paar Parametern, die vom User abhängig (Maus-Aktionen) sind.
Und damit ich nicht 4 mal bspw. das gleiche if-else-Konstrukt schreiben muss, hab ich mir gedacht, ich pack das if-else-Konstrukt in eine separate .java und greif dann von den 4 Tabs aus darauf zu. Nur reicht es eben nicht nur auf die Funktionen.java zugreifen zu können (der Aufruf aus der InPanel1 klappt ja), sondern ich muss dann eben auch von der Funktionen.java wieder auf die Tab-abhängigen-Variablen lesend und schreibend zugreifen können - wie in diesem kleinen Beispiel eben auf diesen String.
Kann mir von Euch jemand helfen?
Grüße,
muemmel
ich weiß, das Thema wurde schon öfter besprochen, aber trotzdem kapier ich's nicht...
Ich hab eine Klasse InPanel1.java und eine Klasse Funktionen.java. Nun gibt es in der Klasse InPanel1 eine Variable (bisher nur ein Test-String, später soll es aber eine HashMap sein), auf die ich von der Klasse Funktionen lesend, wie auch schreibend gerne zugreifen können möchte. Und was soll ich sagen, ich scheiter schon am lesen des Strings .
InPanel1.java
Code:
public class InPanel1 extends JPanel {
Weiss white = new Weiss();
JButton eins1 = new JButton("Hallo");
Funktionen varFunkt = new Funktionen();
JRadioButton ohne = new JRadioButton("ohne",true);
JRadioButton mit = new JRadioButton("mit",false);
ButtonGroup auswahl = new ButtonGroup();
String wort = "abc";
Funktionen.Koord fct = varFunkt.new Koord();
InPanel1() {
setLayout(new BorderLayout());
add(white, BorderLayout.CENTER);
add(eins1, BorderLayout.NORTH);
add(ohne, BorderLayout.WEST);
add(mit, BorderLayout.EAST);
auswahl.add(ohne);
auswahl.add(mit);
}
public class Weiss extends JPanel {
Weiss() {
setLayout(null);
setBackground(new Color(255,255,255));
addMouseListener(new Maus());
}
}
public class Maus extends MouseAdapter {
public void mousePressed(MouseEvent me) {
fct.check();
}
}
}
Code:
public class Funktionen {
InPanel1 p1 = new InPanel1();
Funktionen() {
}
public class Koord {
Koord() {
}
void check() {
System.out.println(p1.wort);
}
}
}
Wenn ich diesen Code ausführen will, dann hagelt es leider nur folgendes:
Exception in thread "main" java.lang.StackOverflowError
at java.util.Hashtable.get(Hashtable.java:336)
at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:140)
at javax.swing.UIDefaults.get(UIDefaults.java:128)
at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:37)
at javax.swing.UIDefaults.getColor(UIDefaults.java:378)
at javax.swing.UIManager.getColor(UIManager.java:590)
at javax.swing.LookAndFeel.installColors(LookAndFeel.java:58)
at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:92)
at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:49)
at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:39)
at javax.swing.JComponent.setUI(JComponent.java:650)
at javax.swing.JPanel.setUI(JPanel.java:131)
at javax.swing.JPanel.updateUI(JPanel.java:104)
at javax.swing.JPanel.(JPanel.java:64)
at javax.swing.JPanel.(JPanel.java:87)
at javax.swing.JPanel.(JPanel.java:95)
at InPanel1$Weiss.(InPanel1.java:32)
at InPanel1.(InPanel1.java:8)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)
at Funktionen.(Funktionen.java:8)
at InPanel1.(InPanel1.java:10)...
(ab hier immer wieder die gleichen beiden Zeilen)
Was mache ich hier falsch?
Die beiden javas da oben sind nur eine kleine Testumgebung, denn eigentlich hab ich eine java mit der main-class, 4 weitere javas mit 4 verschiedenen Tabs und eben so eine Funktionen.java.
In jedem dieser 4 Tabs kann der User prinzipiell erst mal das gleiche machen, jedoch unterscheiden sich diese 4 Tabs durch den GUI-Aufbau und ein paar Parametern, die vom User abhängig (Maus-Aktionen) sind.
Und damit ich nicht 4 mal bspw. das gleiche if-else-Konstrukt schreiben muss, hab ich mir gedacht, ich pack das if-else-Konstrukt in eine separate .java und greif dann von den 4 Tabs aus darauf zu. Nur reicht es eben nicht nur auf die Funktionen.java zugreifen zu können (der Aufruf aus der InPanel1 klappt ja), sondern ich muss dann eben auch von der Funktionen.java wieder auf die Tab-abhängigen-Variablen lesend und schreibend zugreifen können - wie in diesem kleinen Beispiel eben auf diesen String.
Kann mir von Euch jemand helfen?
Grüße,
muemmel