S
Storyline1981
Gast
Hallo,
derzeit schreibe ich an einem sehr kleinen Tool mit dem es möglich ist parameter in einem Bild zu verändern. Dabei tritt ein Kommunikationsproblem zwischen zwei Klassen auf. Das Programm ist noch nicht fertig und funktioniert nicht richtig. Dabei bitte Nachsicht walten lassen.
Hierbei brauch ich Hilfe von Euch da ich mit meinem "Latein" sprichwörtlich am Ende bin.
Der Chat hier geht leider nicht mehr. Ist es eine Einstellungssache oder kann mir eine ALternative empfohlen werden. Habe ein paar kleine Fragen noch zu einigen anderen Architekturproblemen.
Anbei lege ich einen Link mit dem vollständigen Programmcode und im folgenden kommt auszugsweise nur ein ganz kleiner auszug um die Problematik zu erklären.
Frage1: Architektur
Mein Programm besitzt einen Frame an dem beinahe alle Objekte angemeldet sind. Diese Objekte sind über getter erreichbar. Ist dies überhaupt sinnvoll? Der Frame wird instanziert über eine Klasse mit Main methode.
Jede Objektinstanz übergebe ich den Frame mit
Objekt name = new Objekt(this);
Ist dies überhaupt sinnvoll? Spricht etwas dagegen?
Frage2: NullPointer
An diesem Punkt komm ich mit meinem Verständnis nicht mehr weiter. Klasse PanelJTextField kann ohne weiteres auf slider zugreifen und dort A und B ausgeben lassen!
VOn Slider aus kann ich nur A von PanelJText field ausgeben lassen. B und C wirft eine Nullpointer Exception und ich weis nicht mehr weiter.
Im Anhang der restliche Code
http://rafb.net/p/MuDu3599.html
Ich hoffe auf Hilfe!
derzeit schreibe ich an einem sehr kleinen Tool mit dem es möglich ist parameter in einem Bild zu verändern. Dabei tritt ein Kommunikationsproblem zwischen zwei Klassen auf. Das Programm ist noch nicht fertig und funktioniert nicht richtig. Dabei bitte Nachsicht walten lassen.
Hierbei brauch ich Hilfe von Euch da ich mit meinem "Latein" sprichwörtlich am Ende bin.
Der Chat hier geht leider nicht mehr. Ist es eine Einstellungssache oder kann mir eine ALternative empfohlen werden. Habe ein paar kleine Fragen noch zu einigen anderen Architekturproblemen.
Anbei lege ich einen Link mit dem vollständigen Programmcode und im folgenden kommt auszugsweise nur ein ganz kleiner auszug um die Problematik zu erklären.
Frage1: Architektur
Mein Programm besitzt einen Frame an dem beinahe alle Objekte angemeldet sind. Diese Objekte sind über getter erreichbar. Ist dies überhaupt sinnvoll? Der Frame wird instanziert über eine Klasse mit Main methode.
Jede Objektinstanz übergebe ich den Frame mit
Objekt name = new Objekt(this);
Ist dies überhaupt sinnvoll? Spricht etwas dagegen?
Frage2: NullPointer
Code:
public class MainFrame extends JFrame {
private Slider slider;
private PanelJTextField panelJTextField;
public MainFrame(){
this.slider = new Slider(this);
//liegt es daran das slider an diesem Punkt PanelJText noch nicht kennt? Wie umgehe ich das? Wo lege ich dann
//klassen besser an wenn ich immer darauf achten muss wer wann wen kennt?
this.panelJTextField = new PanelJTextField(this);
}
public Slider getSlider() {
return slider;
}
public PanelJTextField getPanelJTextField() {
return this.panelJTextField;
}
public void ForwardJSagA(){
this.panelJTextField.sagA();
}
}
---------------
public class PanelJTextField extends JPanel {
private Slider slider;
private MainFrame frame;
public PanelJTextField(MainFrame frame) {
this.frame=frame;
this.slider=frame.getSlider();
this.slider.sagA(); //funktioniert
frame.getSlider().sagB(); //funktioniert
}
public void sagA(){
System.out.println("PanelA");
}
public void sagB() {
System.out.println("PanelB");
}
public void sagC() {
System.out.println("PanelC");
}
--------
public class Slider {
private Parameter parameter;
private JSlider[] jSlider;
private int sliderTicks;
private PanelJTextField panelJTextField;
private MainFrame frame;
public Slider(MainFrame frame) {
this.frame=frame;
this.panelJTextField = frame.getPanelJTextField();
this.parameter = frame.getParameter();
this.jSlider = new JSlider[5];
this.sliderTicks = 5;
}
public void sagA(){
System.out.println("SliderA");
}
public void sagB() {
System.out.println("SliderB");
}
public void sagC() {
System.out.println("C");}
public class ListenerSlide implements ChangeListener { //innere Klasse
public void stateChanged(ChangeEvent cE) {
JSlider source = (JSlider) cE.getSource();
if (!source.getValueIsAdjusting()) {
int val = (int) source.getValue();
String tool = (String) source.getToolTipText();
if (tool.equals("SliderX")) { //funktioniert
frame.ForwardJSagA(); //funktioniert ist doch genau das selbe wie darunter?
//IN FRAME: this.panelJTextField.sagA(); ist doch äquivalent zu IN SLIDER: frame.getPanelJTextField().sagA();
panelJTextField.sagB();//NullPointer <--------------------------- EXCEPTION
frame.getPanelJTextField().sagC();//NullPointer <------------------------- EXCEPTION
}
}
}
}
}
-----
An diesem Punkt komm ich mit meinem Verständnis nicht mehr weiter. Klasse PanelJTextField kann ohne weiteres auf slider zugreifen und dort A und B ausgeben lassen!
VOn Slider aus kann ich nur A von PanelJText field ausgeben lassen. B und C wirft eine Nullpointer Exception und ich weis nicht mehr weiter.
Im Anhang der restliche Code
http://rafb.net/p/MuDu3599.html
Ich hoffe auf Hilfe!