Βιβλία για Java και συμβουλές γiα Swing
Βιβλία για Java και συμβουλές γiα Swing
Γειά σας!!! Μήπως ξέρει κανείς κάποιο καλό εισαγωγικό βιβλίο για το Swing της Java ???
Last edited by papo2 on Tue Dec 20, 2005 10:52 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
-
- Venus Project Founder
- Posts: 488
- Joined: Wed Apr 21, 2004 12:00 am
- Location: a world without time
Καταρχήν Καλωσόρισες!!!
βιβλίο δεν ξέρω αλλά δεν νομίζω να χρειάζεται.. κ ειδικά για το Swing
δοκίμασε αυτό
και παίξε με κάποιο IDE όπως NetBeans ή JBuilder γιατί προσφέρουν πολλές ευκολίες κ δεν χρειάζεται να γράψεις pure κώδικα
βιβλίο δεν ξέρω αλλά δεν νομίζω να χρειάζεται.. κ ειδικά για το Swing
δοκίμασε αυτό
και παίξε με κάποιο IDE όπως NetBeans ή JBuilder γιατί προσφέρουν πολλές ευκολίες κ δεν χρειάζεται να γράψεις pure κώδικα
People are never more insecure than when they become obsessed with their fears at the expense of their dreams
Τώρα κάτι άσχετο... ένα σφάλμα που μου εμφανίζεται αρκετά συχνα κατα τη μετάφραση του κώδικα είναι "cannot resolve symbol" τι ακριβώς είναι και τι κάνουμε για να το διορθώσουμε
Last edited by papo2 on Tue Dec 20, 2005 10:52 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Λοιπόν.. αφού ξεφύγαμε από το θέμα να ρωτήσω και κάτι άλλο... Έχω γράψει ένα πρόγραμμα και ενώ μου κάνει κανονικά compile, όταν πάω να το τρέξω μου βγάζει το εξής :
" Exception in thread "main" java.lang.NullPointerException "
Τι πρέπει να κάνω ???
" Exception in thread "main" java.lang.NullPointerException "
Τι πρέπει να κάνω ???
Last edited by papo2 on Tue Dec 20, 2005 10:53 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
- tsilochr
- Wow! Terabyte level
- Posts: 3246
- Joined: Tue Mar 16, 2004 2:47 pm
- Academic status: PhD
- Gender: ♂
- Location: mm.aueb.gr
- Contact:
DEBUGpapo2 wrote:Λοιπόν.. αφού ξεφύγαμε από το θέμα να ρωτήσω και κάτι άλλο... Έχω γράψει ένα πρόγραμμα και ενώ μου κάνει κανονικά compile, όταν πάω να το τρέξω μου βγάζει το εξής :
" Exception in thread "main" java.lang.NullPointerException "
Τι πρέπει να κάνω ???
(γιούπι, αυτή είναι η τεσσαρακοστή μου δημοσίευση!!!)

Μήπως θα μπορούσες να γίνεις λίγο πιο συγκεκριμένος???
Last edited by papo2 on Tue Dec 20, 2005 10:54 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Η χρησιμοποιησε καποιο ide να κανεις debug το οποιο θα σου δειξει ακριβως σε ποια γραμμη του κωδικα πεταχτηκε το exception.
Αλλιως κοιτα το stacktrace που σου τυπωνει στη κονσολα και πηγαινε στη κομματι του κωδικα που σου δειχνει η πρωτη γραμμη στη κονσολα μετα απο αυτη που σου λεει οτι το excepption ειναι nullpointer.Εκει πρεπει να κοιταξεις καλα τη γραφεις και να καταλαβεις τι πεταει το exception και γιατι.Συνηθως καλεις μεθοδο σε αντικειμενο που ειναι null.Η προσθετεις σε δομη που χρησιμοποιεις νεο αντικειμενο που ειναι null.Ψαξε στο source αρχειο αυτης της κλασης (τη κλαση της δομης δηλαδη πχ HashMap) και δες ποια μεθοδο πεταει nullpointerexception.Τα source αρχεια (.java) ολης της βιβλιοθηκης της java βρισκεται στο φακελο του jdk (πχ c:\program files\java\jdk1.5.0_04\src.zip) και λεγεται src.zip.
Αν δεν μπορεις να δεις απο τη κονσολα σε ποιο σημειο πεταγετε το exception μπορεις να κανεις το πιο πρωτογονο debugging που ειναι να βαζεις εντολες system.out.println("something to make you understand"); παντου στο κωδικα σου και ετσι να καταλαβεις που κολλησε.
Πιο συγκεκριμενα με χρηση IDE εδω : http://www.netbeans.org/kb/41/using-netbeans/debug.html
Αλλιως κοιτα το stacktrace που σου τυπωνει στη κονσολα και πηγαινε στη κομματι του κωδικα που σου δειχνει η πρωτη γραμμη στη κονσολα μετα απο αυτη που σου λεει οτι το excepption ειναι nullpointer.Εκει πρεπει να κοιταξεις καλα τη γραφεις και να καταλαβεις τι πεταει το exception και γιατι.Συνηθως καλεις μεθοδο σε αντικειμενο που ειναι null.Η προσθετεις σε δομη που χρησιμοποιεις νεο αντικειμενο που ειναι null.Ψαξε στο source αρχειο αυτης της κλασης (τη κλαση της δομης δηλαδη πχ HashMap) και δες ποια μεθοδο πεταει nullpointerexception.Τα source αρχεια (.java) ολης της βιβλιοθηκης της java βρισκεται στο φακελο του jdk (πχ c:\program files\java\jdk1.5.0_04\src.zip) και λεγεται src.zip.
Αν δεν μπορεις να δεις απο τη κονσολα σε ποιο σημειο πεταγετε το exception μπορεις να κανεις το πιο πρωτογονο debugging που ειναι να βαζεις εντολες system.out.println("something to make you understand"); παντου στο κωδικα σου και ετσι να καταλαβεις που κολλησε.
Πιο συγκεκριμενα με χρηση IDE εδω : http://www.netbeans.org/kb/41/using-netbeans/debug.html
Βρήκα τι έφταιγε όμως έπρεπε να διαγράψω το πρώτο if και όταν το έτρεξα (χωρίς το if) δεν έκανε τις πράξεις, έβζαζε ένα κατεβατό με το σφάλμα NumberFormatException. Τι πρέπει να κάνω για να τρέξει κανονικά και να μην το αλλάξω πολύ.
Έχω όμως να ρωτήσω και κάτι άλλο, συγνώμη που γίνομαι κουραστικός, τι πρέπει να κάνω αν σε μία εφαρμογή έχω ένα κουμπί και ένα πλαίσιο ελέγχου ώστε να του πω, πως για να εκτελεστεί ότι είναι προγραμματισμένο να κάνει το πλαίσιο ελέγχου θα πρέπει να πατήσω το κουμπί, δηλαδή μέχρι να το πατήσω δεν θα εκτελείται ότι λέει το πλαίσιο ελέγχου, είται είναι επιλεγμένο, είτε όχι.
Αυτός είναι ο κώδικας του προγράμματος πιο είναι το λάθος και πώς διορθώνεται? επίσης αν κάνεις compile όπως είναι θα βγάλει αυτό
"Note: Arithmetic.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details"
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Arithmetic extends JFrame
{
Container cp;
JTextField tf,tf1,tf2;
JCheckBox b;
JLabel l,l1,l2,l3;
JPanel p,p1;
boolean flag=true;
String s,s1,s2,s3;
int sum,dif,dim;
GridLayout g;
JButton b1;
public static void main(String args[])
{
Arithmetic app=new Arithmetic();
app.setSize(300,200);
app.setVisible(true);
}
public Arithmetic()
{
super("Πράξεις");
CheckRadioHandler handler=new CheckRadioHandler();
cp=getContentPane();
g= new GridLayout(3,1);
cp.setLayout(g);
if(flag)
{
flag=true;
b1.setLabel("Πρόσθεση");
}
else
{
flag=false;
b1.setLabel("Αφαίρεση");
}
p=new JPanel();
l=new JLabel("Δώστε έναν αριθμό ");
tf=new JTextField(20);
l1=new JLabel("Δώστε έναν άλλο αριθμό ");
tf1=new JTextField(20);
l2=new JLabel("Το αποτέλεσμα είναι ");
tf2=new JTextField(20);
b1=new JButton("Πρόσθεση");
p.add(l);
p.add(tf);
p.add(l1);
p.add(tf1);
p.add(l2);
p.add(tf2);
p.add(b1);
p1=new JPanel();
l3=new JLabel("Η πράξη που θα γίνει είναι ");
b=new JCheckBox("Πρόσθεση",false);
b.addItemListener(handler);
p1.add(l3);
p1.add(b);
}
private class CheckRadioHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange()==ItemEvent.SELECTED)
{
s=String.valueOf(tf);
s1=String.valueOf(tf1);
sum=Integer.parseInt(s);
dif=Integer.parseInt(s1);
dim=sum-dif;
s2=String.valueOf(dim);
tf2.setText(s2);
}
else
{
if(e.getStateChange()==ItemEvent.DESELECTED)
{
s=String.valueOf(tf);
s1=String.valueOf(tf1);
sum=Integer.parseInt(s);
dif=Integer.parseInt(s1);
dim=sum+dif;
s2=String.valueOf(dim);
tf2.setText(s2);
}
}
};
}
}
Έχω όμως να ρωτήσω και κάτι άλλο, συγνώμη που γίνομαι κουραστικός, τι πρέπει να κάνω αν σε μία εφαρμογή έχω ένα κουμπί και ένα πλαίσιο ελέγχου ώστε να του πω, πως για να εκτελεστεί ότι είναι προγραμματισμένο να κάνει το πλαίσιο ελέγχου θα πρέπει να πατήσω το κουμπί, δηλαδή μέχρι να το πατήσω δεν θα εκτελείται ότι λέει το πλαίσιο ελέγχου, είται είναι επιλεγμένο, είτε όχι.
Αυτός είναι ο κώδικας του προγράμματος πιο είναι το λάθος και πώς διορθώνεται? επίσης αν κάνεις compile όπως είναι θα βγάλει αυτό
"Note: Arithmetic.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details"
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Arithmetic extends JFrame
{
Container cp;
JTextField tf,tf1,tf2;
JCheckBox b;
JLabel l,l1,l2,l3;
JPanel p,p1;
boolean flag=true;
String s,s1,s2,s3;
int sum,dif,dim;
GridLayout g;
JButton b1;
public static void main(String args[])
{
Arithmetic app=new Arithmetic();
app.setSize(300,200);
app.setVisible(true);
}
public Arithmetic()
{
super("Πράξεις");
CheckRadioHandler handler=new CheckRadioHandler();
cp=getContentPane();
g= new GridLayout(3,1);
cp.setLayout(g);
if(flag)
{
flag=true;
b1.setLabel("Πρόσθεση");
}
else
{
flag=false;
b1.setLabel("Αφαίρεση");
}
p=new JPanel();
l=new JLabel("Δώστε έναν αριθμό ");
tf=new JTextField(20);
l1=new JLabel("Δώστε έναν άλλο αριθμό ");
tf1=new JTextField(20);
l2=new JLabel("Το αποτέλεσμα είναι ");
tf2=new JTextField(20);
b1=new JButton("Πρόσθεση");
p.add(l);
p.add(tf);
p.add(l1);
p.add(tf1);
p.add(l2);
p.add(tf2);
p.add(b1);
p1=new JPanel();
l3=new JLabel("Η πράξη που θα γίνει είναι ");
b=new JCheckBox("Πρόσθεση",false);
b.addItemListener(handler);
p1.add(l3);
p1.add(b);
}
private class CheckRadioHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange()==ItemEvent.SELECTED)
{
s=String.valueOf(tf);
s1=String.valueOf(tf1);
sum=Integer.parseInt(s);
dif=Integer.parseInt(s1);
dim=sum-dif;
s2=String.valueOf(dim);
tf2.setText(s2);
}
else
{
if(e.getStateChange()==ItemEvent.DESELECTED)
{
s=String.valueOf(tf);
s1=String.valueOf(tf1);
sum=Integer.parseInt(s);
dif=Integer.parseInt(s1);
dim=sum+dif;
s2=String.valueOf(dim);
tf2.setText(s2);
}
}
};
}
}
Last edited by papo2 on Tue Dec 20, 2005 10:51 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Το προβλημα ειναι οτι καλεις την setLabel στα buttons.Αυτες οι μεθοδοι ειναι deprecated.Αλλαξε τις κλησεις αυτες με την setText().
Επισης παρακατω λες "αν το flag ειναι true -> καντο true"
αλλαξε το με αυτο :
Επισης παρακατω λες "αν το flag ειναι true -> καντο true"
Code: Select all
if(flag)
{
flag=true;
b1.setLabel("Πρόσθεση");
}
else
{
flag=false;
b1.setLabel("Αφαίρεση");
}
Code: Select all
if(flag)
{
b1.setLabel("Πρόσθεση");
}
else
{
b1.setLabel("Αφαίρεση");
}
Όταν το άλλαξα, κατα την εκτέλεση μου πετάει πάλι την εξαίρεση NullPointerException. Τώρα τι κάνω???
Ακριβώς λέει: Exception in thread "main" java.lang.NullPointerException
at Arithmetic.<init>(Arithmetic.java:34)
at Arithmetic.main(Arithmetic.java:20)
Ακριβώς λέει: Exception in thread "main" java.lang.NullPointerException
at Arithmetic.<init>(Arithmetic.java:34)
at Arithmetic.main(Arithmetic.java:20)
Last edited by papo2 on Tue Dec 20, 2005 10:54 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Αυτο ειναι γιατι καλεις μεθοδο σε αντικειμενο που ειναι null οπως ειπα και παραπανω οτι ειναι το συνηθες λαθος .Το b1 αρχικοπειται αργοτερα στο κωδικα.Εσυ καλεις την setText στο b1 και αυτο ειναι null.Βαζε ολες τις αρχικοποιησεις μαζι με τις δηλωσεις στην αρχη αρχη της κλασης.Μην αφηνεις κανενα null.Μετα μεσα στον κατασκευαστη αρχιζεις να κατασκευαζεις το frame σου.
Ευχαριστώ!!! Τωρα δουλεύει κανονικά.Όταν όμως του δώσω τους αριθμούς και πατήσω να γίνει η πράξη μου πετάει μια εξαίρεση NumberFormatException ,η οποία είναι για λάθος μετατροπή αλφαριθμητικού δελομένου σε αριθμητικό. Εμένα μου φαίνεται σωστή η μετατροπή, εσείς βλέπετε κάποιο λάθος???
Last edited by papo2 on Tue Dec 20, 2005 10:55 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Πρεπει να προστατεψεις τις integer.parseInt κλησεις οι οποιες και πετανε το numberformatexception.Με try catch blocks.
Επισης ΔΕΝ χρειαζεται να γραψεις String.valueOf οταν περνεις τη τιμη απο το textfield.Αυτη ειναι ουτως η αλλως string ("" αν δενεχει βαλει τπτ).Πετα αυτη τη τιμη κατευθειαν στην integer.parseint και προσπαθησε να πιασεις το exception που ειπαμε παραπανω το οποιο πεταγετε οταν...
Δες στο src.zip την κλαση Integer.java στο java.lang φακελο.
Επισης ΔΕΝ χρειαζεται να γραψεις String.valueOf οταν περνεις τη τιμη απο το textfield.Αυτη ειναι ουτως η αλλως string ("" αν δενεχει βαλει τπτ).Πετα αυτη τη τιμη κατευθειαν στην integer.parseint και προσπαθησε να πιασεις το exception που ειπαμε παραπανω το οποιο πεταγετε οταν...
Δες στο src.zip την κλαση Integer.java στο java.lang φακελο.
Ευχαριστώ!!! Τώρα δουλεύει κανονικά. Πιο πάνω όμως είχα ρωτήσει πώς γίνεται αν έχω ένα κουμπί και ένα πλαίσιο ελέγχου, να ρυθμίσω το πρόγραμμα έτσι ώστε για να γίνει ότι είναι προγραμματισμένο να κάνει το πλαίσιο ελέγχου, είτε είναι επιλεγμένο είτε όχι, να πρέπει να πατήσω το κουμπί, αλλιώς, μέχρι να το πατήσω, το πλαάσιο ελέγχου να μην εκτελεί το event που είναι να κάνει.??
Last edited by papo2 on Tue Dec 20, 2005 10:56 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Επειδή μάλλον φαίνεται περίπλοκο όπως το είπα πριν ας δώσω ένα παράδειγμα: Στο πλαίσιο διαλόγου Γραμματοσειρά υπάρχουν λίστες, πλαίσια ελέγχου κτλ... όλα αυτά, που έχεις επιλέξει, για να εφαρμοστούν στο κείμενο θα πρέπει να πατήσεις το κουμπί ΟΚ.Αυτό που θέλω να μάθω είναι,πώς γίνεται αυτό, δηλαδή για να εφαρμοστεί ό,τι λέει το πλαίσιο ελέγχου, να πρέπει να πατήσω το κουμπί...???
Last edited by papo2 on Tue Dec 20, 2005 10:56 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Ωραία... Ας αναφέρω ξανά το παράθυρο διαλόγου Γραμματοσειρά που υπάρχει στα Windows. Αυτό το παράθυρο έχει κουμπιά, πλαίσια ελέγχου, λίστες κτλ... Εκεί κάνεις τις ρυθμίσεις που θέλεις για το κείμενο. Ό,τι επιλέξεις από τις λίστες, τα πλαίσια ελέγχου και τα άλλα, δεν εφαρμόζονται απευθείας στο κείμενο. Πρέπει πρώτα να πατήσεις ένα κουμπί (ΟΚ), αλλιώς ό,τι και αν έχεις επιλέξει δεν πρόκειται να εφαρμοστεί.
Αυτό που ρωτάω εγώ είναι: τι πρέπει να κάνουμε εμείς σε ένα δικό μας πρόγραμμα έτσι ώστε να γίνεται το ίδιο με αυτό στη Γραμματοσειρά.
Δηλαδή να έχω ένα κουμπί το οποίο να το πατάω και έτσι να εκτελείται ότι είναι προγραμματισμένο να κάνει το πλαίσιο ελέγχου,η λίστα κτλ...???
Αυτό που ρωτάω εγώ είναι: τι πρέπει να κάνουμε εμείς σε ένα δικό μας πρόγραμμα έτσι ώστε να γίνεται το ίδιο με αυτό στη Γραμματοσειρά.
Δηλαδή να έχω ένα κουμπί το οποίο να το πατάω και έτσι να εκτελείται ότι είναι προγραμματισμένο να κάνει το πλαίσιο ελέγχου,η λίστα κτλ...???
Last edited by papo2 on Tue Dec 20, 2005 10:59 pm, edited 1 time in total.
«Η ευτυχία συνήθως έρχεται σε όσους είναι πολύ απασχολημένοι για να ψάξουν να τη βρουν.»
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
ΧΕΝΡΙ ΝΤΕΪΒΙΝΤ ΤΟΡΟ
Μα οτι κανεις ο αλλος στη λιστα και στα αλλα δεν εχουν αμεση εφαρμογη απο μονα τους.Εκτος αν βαλεις listeners και κανεις κατι μολις αλλαξει καποιος κατι η επιλεξει απο τη λιστα κτλ.Εσυ απλα δεν κανεις τιποτα το ουσιαστικο.Αυτο που κανεις ειναι μονο οταν πατησει το ΟΚ.Τοτε πηγαινεις και περνεις απο τη λιστα πιο ειναι επιλεγμενο,απο το texfeild τι ειναι τυπωμενο,απο το checkbox πιο ειναι τικ-αρισμενο κτλ κτλ και κανεις συνολικα οτι θες.
Αυτο που θελω να πω ειναι οτι το να πειραξεις κατι απο τις λιστες ,η όποιο απο τα αλλα, ΕΧΟYΝ εφαρμογη ΜΟΝΟ αν τους πεις εσυ να κανουν κατι.Οποτε δεν τους λες και τα κανεις ολα στον listener του OK.
Αλλη σκεψη ειναι να εχεις μια global boolean μεταβλητη.Αρχικα ειναι false.Οι λιστες και τα αλλα που κανουν καποια δουλεια τι κανουν ΜΟΝΟ αν η τιμη ειναι true.Αρα οσο η τιμη ειναι false δεν κανουν τιποτα.Εδω μπαινει το κουμπι ΟΚ.Βαλε αυτο να αλλαζει την boolean τιμη σε true.Οποτε μετα οταν τρεξει αυτο που κανει η λιστα για παραδειγμα θα βρει την τιμη true και ολα οκ.
Ακομα μπορεις πατωντας το ΟΚ και αλλαζοντας την τιμη να κανεις fire/invoke τις μεθοδους που τρεχουν η λιστα κτλ.
Η λιστα πχ να λεει:
List_Listener(event e){
if ( canDoMyWork ) callMyMethodThatDoesMyListStuff();
}
ControlPanel_Listener(event e){
if ( canDoMyWork ) callMyMethodThatDoesMyPanelStuff();
}
OkButtonListener_mousePressed(mouseevent e){
//button was pressed so change flag to true and call methods
canDoMyWork = true;
callMyMethodThatDoesMyListStuff();
callMyMethodThatDoesMyPanelStuff();
}
Αυτο που θελω να πω ειναι οτι το να πειραξεις κατι απο τις λιστες ,η όποιο απο τα αλλα, ΕΧΟYΝ εφαρμογη ΜΟΝΟ αν τους πεις εσυ να κανουν κατι.Οποτε δεν τους λες και τα κανεις ολα στον listener του OK.
Αλλη σκεψη ειναι να εχεις μια global boolean μεταβλητη.Αρχικα ειναι false.Οι λιστες και τα αλλα που κανουν καποια δουλεια τι κανουν ΜΟΝΟ αν η τιμη ειναι true.Αρα οσο η τιμη ειναι false δεν κανουν τιποτα.Εδω μπαινει το κουμπι ΟΚ.Βαλε αυτο να αλλαζει την boolean τιμη σε true.Οποτε μετα οταν τρεξει αυτο που κανει η λιστα για παραδειγμα θα βρει την τιμη true και ολα οκ.
Ακομα μπορεις πατωντας το ΟΚ και αλλαζοντας την τιμη να κανεις fire/invoke τις μεθοδους που τρεχουν η λιστα κτλ.
Η λιστα πχ να λεει:
List_Listener(event e){
if ( canDoMyWork ) callMyMethodThatDoesMyListStuff();
}
ControlPanel_Listener(event e){
if ( canDoMyWork ) callMyMethodThatDoesMyPanelStuff();
}
OkButtonListener_mousePressed(mouseevent e){
//button was pressed so change flag to true and call methods
canDoMyWork = true;
callMyMethodThatDoesMyListStuff();
callMyMethodThatDoesMyPanelStuff();
}