Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά,

 

έχω ψάξει στο net αλλά δεν έχω βρεί πουθενά δυναμική εκχώρηση στοιχείων σε λίστα(swing controls) στο Netbeans.

Έχω ένα πρόγραμμα που σκανάρει ένα αρχείο και αποθηκεύει κάπου μια λίστα απο δεδομένα. Αυτό που θέλω είναι το πρόγραμμά μου να μην έχει fix αριθμό απο την λίστα στο GUI δλδ οτι θα εμφανίζει 20 data. Θέλω αν σκανάρω 5 να εμφανιστούν στην λίστα 5 items. Αν σκανάρω 50 τότε 50 items. Το μόνο που έχω καταφέρει είναι να ορίσω δυναμικά πόσα και ποιά ακριβώς θα εμφανιστούν.

 

σας ευχαριστώ για τον χρόνο σας.

Δημοσ.

Κρίνοντας κι από το άλλο νήμα, μάλλον πρέπει να διαλέξεις μια γλώσσα κι ένα GUI και να αρχίσεις σιγά-σιγά να διαβάζεις την τεκμηρίωσή τους.

 

Για Swing σε Java μπορείς να ξεκινήσεις από εδώ: http://docs.oracle.com/javase/tutorial/uiswing/index.html

 

Επίσης αν έχω καταλάβει καλά αυτό που ρωτάς, τότε μάλλον εννοείς την μέθοδο add: http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html#add

Δημοσ.

¨Εχεις απόλυτο δίκιο φίλε μου οτι πρέπει να ξεκινήσω με μια αλλά η κοινωνία και τα πανεπιστήμια δεν δίνουν αυτή τη δυνατότητα. Απλά μαθαίνεις διάφορα και φτιάχνεις ένα σαντουιτς με όλες τις γλώσσες μετα... :(

Δημοσ.

Αν εννοεις τη jList τοτε αυτο που λες γινεται. Απλα στο συγκεκριμενο control δεν εχει κανει 'ολοκληρωμενη' δουλεια

το Netbeans και χρειαζεται λιγη γραφη κωδικα για να οριστει σωστα η jList.

Ειδικοτερα πρεπει να ορισεις ο ιδιος το DefaultListModel της jList.

Εχει απαντηθει εδω.

http://www.java-forums.org/netbeans/8865-adding-jlist-netbeans.html

Δημοσ.

¨Εχεις απόλυτο δίκιο φίλε μου οτι πρέπει να ξεκινήσω με μια αλλά η κοινωνία και τα πανεπιστήμια δεν δίνουν αυτή τη δυνατότητα. Απλά μαθαίνεις διάφορα και φτιάχνεις ένα σαντουιτς με όλες τις γλώσσες μετα... :(

Για να είμαι ειλικρινής δεν νομίζω πως φταίνε τα πανεπιστήμια, ούτε η κοινωνία :lol:

 

Πέρα από την πλάκα, έχω την εντύπωση πως θεωρείς ότι μπορείς γρήγορα, ανέξοδα και εύκολα να προσθέσεις GUI στο πρόγραμμά σου, χωρίς να χρειάζεται να εμβαθύνεις έστω και σε μικρό βαθμό.

 

Αυτό μπορεί να επιτευχθεί με κάποια RAD tools που δημιουργούν και κώδικα αυτόματα, αλλά προϋποθέτουν έτσι κι αλλιώς να έχεις καλή γνώση τουλάχιστον της γλώσσας που χρησιμοποιείς. Ειδικά για την δυναμική διαχείριση του GUI χρειάζεται να έχεις τουλάχιστον κατανοήσει τα βασικά του πως λειτουργεί το GUI σου (που όμως ευτυχώς σαν φιλοσοφία είναι πάνω-κάτω η ίδια στα δημοφιλή GUIs). Μετά είναι απλώς ζήτημα χρόνου να βρεις ποιες ρουτίνες του GUI API σου επιτρέπουν να προσθαφαιρείς γραφικά στοιχεία δυναμικά.

 

Η δική μου πρόταση είναι να βρεις ένα δημοφιλές GUI για την γλώσσα στην οποία έχεις γράψει το πρόγραμμά σου, και να αρχίσεις να διαβάζεις την τεκμηρίωσή του, tutorials, βιβλία, κλπ.

 

Επίσης, υπάρχει μεγάλη διαφορά μεταξύ του κώδικα που γράφεις για αλληλεπίδραση με τον χρήστη μέσω κονσόλας και του κώδικα που γράφεις για αλληλεπίδραση με τον χρήστη μέσω GUI. Στην πρώτη περίπτωση συνήθως τα πάντα λειτουργούν sequentially με blocked I/O, ενώ τα GUI είναι κατά κανόνα event-driven (με callback functions) κι ενίοτε με ασύγχρονο I/O.

Δημοσ.

Με έβαλες σε σκέψεις :D Ομολογώ οτι στα περισσότερα συμφωνώ μαζί σου φίλε μου. Λέω να δοκιμάσω με GTK+ πάνω στη C και ίσως ξαναεπιστρέψω στο παρόν νήμα για κάποια επιπλέον πληροφορία. 

Δημοσ.

Επειδή σίγουρα στο μέλλον και κάποιος άλλος θα δεί το νήμα η απάντηση στην ερώτησή μου είναι:

 

Για να δημιουργήσεις στατική δικιά σου λίστα χρησιμοποιείς την παρακάτω μέθοδο,

public void myList() {
        JList myL = new javax.swing.JList();
        myL.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        myListPanel.setViewportView(myL);
    }

 

 

και αν θέλεις να γίνεται κάτι δυναμικά simply ορίζεις το strings ώς global και το ενημερώνεις απο κάποια άλλη μεθοδο.

 

Καλή συνέχεια...

Δημοσ.

Με έβαλες σε σκέψεις :D Ομολογώ οτι στα περισσότερα συμφωνώ μαζί σου φίλε μου. Λέω να δοκιμάσω με GTK+ πάνω στη C και ίσως ξαναεπιστρέψω στο παρόν νήμα για κάποια επιπλέον πληροφορία. 

 

Αν το πρόγραμμά σου είναι γραμμένο σε C, τότε μου ακούγεται καλή ιδέα

 

Απλώς σημείωσε πως το GTK+3 έχει κάποιες ασυμβατότητες με το GTK+2. Το περισσότερο code-base αυτή τη στιγμή είναι σε GTK+2, οπότε ίσως είναι καλύτερα να ξεκινήσεις με αυτό πρώτα, επειδή και περισσότερα πράγματα θα βρεις και πιο τεσταρισμένο είναι. Μπορείς πάντως να τα έχεις και τα 2 παράλληλα στο σύστημά σου.

 

Για visual editor, κατέβασε το Glade (έκδοση 3.8.x για GTK+2, έκδοση 3.10+.x για GTK+3). Ένα σημείο που θυμάμαι δεν είχα βρει εύκολα στην τεκμηρίωση, είναι πως αν ορίσεις μέσα στο Glade τις callback functions για τα signals (τους λεγόμενους signal handlers) τότε αν είσαι σε Windows πρέπει μέσα στον κώδικά σου να τις ορίσεις με: G_MODULE_EXPORT.

 

Π.χ...

 

G_MODULE_EXPORT gboolean
gui_on_button_release_event_evxBoard( GtkWidget  *eventbox, GdkEventButton *eb, gpointer userdata)
{
    ...
}
 
 

Αν είσαι σε Unix/Linux τότε αντί για το παραπάνω δίνεις στον linker: -export-dynamic

 

Π.χ....

 

gcc gtk_hello.c -o gtk_hello -export-dynamic `pkg-config --cflags --libs gtk+-2.0`
 

Δες την τεκμηρίωση της συνάρτησης: gtk_builder_connect_signals().

 

Αν δεν ορίσεις του signal-handlers μέσα στο Glade, τότε δεν χρειάζεσαι τίποτα από τα παραπάνω, και χρησιμοποιείς τη συνάρτηση: g_signal_connect() για να συνδέσεις μέσα στον κώδικά σου ένα-ένα τα signals που σε ενδιαφέρουν για το καθένα από τα interactive γραφικά στοιχεία που έχεις σχεδιάσει (είτε στατικά στο Glade, είτε δυναμικά μέσα στον κώδικά σου)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...