Hallo zusammen,
ich habe eine Klasse (sagen wir A), in der ich über einen Button gesteuert eine Instanz einer anderen Klasse (sagen wir B) erzeugen kann. Für jene Instanz werden über Dialogboxen einige Werte abgefragt. Was ich erreichen will, ist, dass wenn in einer dieser Dialogboxen auf "Cancel" geklickt wird, der Konstruktor der Klasse B eine Exception wirft, der Konstruktor somit verlassen wird und im catch-Block der Klasse A über System.out.println dem User mitgeteilt wird, dass die Instanz nicht erzeugt wurde.
Theoretisch alles schön...praktisch wird das Objekt aber trotzdem erzeugt, was ich daran sehe, dass ich bestimmte Funktionen, die nur mit einer aktiven B-Instanz funktionieren, trotzdem ausführen kann?!
Hier mal Code:
1. Button Klasse A
2. Dialogbox-Beispiel aus Konstruktor B
Der Konstruktor ist auch entsprechend mit "throws Exception" versehen. Irgendwelche Ideen, Vorschläge, Änderungswünsche?
Danke!
ich habe eine Klasse (sagen wir A), in der ich über einen Button gesteuert eine Instanz einer anderen Klasse (sagen wir B) erzeugen kann. Für jene Instanz werden über Dialogboxen einige Werte abgefragt. Was ich erreichen will, ist, dass wenn in einer dieser Dialogboxen auf "Cancel" geklickt wird, der Konstruktor der Klasse B eine Exception wirft, der Konstruktor somit verlassen wird und im catch-Block der Klasse A über System.out.println dem User mitgeteilt wird, dass die Instanz nicht erzeugt wurde.
Theoretisch alles schön...praktisch wird das Objekt aber trotzdem erzeugt, was ich daran sehe, dass ich bestimmte Funktionen, die nur mit einer aktiven B-Instanz funktionieren, trotzdem ausführen kann?!
Hier mal Code:
1. Button Klasse A
Code:
private void addClassButtonActionPerformed(ActionEvent evt)
{
// create new box - dimension = (0,0) --> setSize in mouseReleased
try
{
activeInstance = new ClassBox(TickFrame.this,main_panel,doc,status_panel);
}
catch(Exception exc)
{
System.out.println("Instance wasn't created.");
}
// add instance to main_panel
main_panel.add(activeInstance);
}
2. Dialogbox-Beispiel aus Konstruktor B
Code:
// dialog for class name
try
{
c_name = (String) JOptionPane.showInputDialog(frame,
"Enter the class name",
"Name?",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"Enter class name here...");
if(c_name == null)
{
Exception exc = new Exception();
throw exc;
}
}
catch(Exception exc)
{
return;
}
Der Konstruktor ist auch entsprechend mit "throws Exception" versehen. Irgendwelche Ideen, Vorschläge, Änderungswünsche?
Danke!