goldenlion Δημοσ. 1 Φεβρουαρίου 2013 Δημοσ. 1 Φεβρουαρίου 2013 Καλησπέρα παιδιά, έχω ψάξει στο net αλλά δεν έχω βρεί πουθενά δυναμική εκχώρηση στοιχείων σε λίστα(swing controls) στο Netbeans. Έχω ένα πρόγραμμα που σκανάρει ένα αρχείο και αποθηκεύει κάπου μια λίστα απο δεδομένα. Αυτό που θέλω είναι το πρόγραμμά μου να μην έχει fix αριθμό απο την λίστα στο GUI δλδ οτι θα εμφανίζει 20 data. Θέλω αν σκανάρω 5 να εμφανιστούν στην λίστα 5 items. Αν σκανάρω 50 τότε 50 items. Το μόνο που έχω καταφέρει είναι να ορίσω δυναμικά πόσα και ποιά ακριβώς θα εμφανιστούν. σας ευχαριστώ για τον χρόνο σας.
migf1 Δημοσ. 1 Φεβρουαρίου 2013 Δημοσ. 1 Φεβρουαρίου 2013 Κρίνοντας κι από το άλλο νήμα, μάλλον πρέπει να διαλέξεις μια γλώσσα κι ένα GUI και να αρχίσεις σιγά-σιγά να διαβάζεις την τεκμηρίωσή τους. Για Swing σε Java μπορείς να ξεκινήσεις από εδώ: http://docs.oracle.com/javase/tutorial/uiswing/index.html Επίσης αν έχω καταλάβει καλά αυτό που ρωτάς, τότε μάλλον εννοείς την μέθοδο add: http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html#add
goldenlion Δημοσ. 1 Φεβρουαρίου 2013 Μέλος Δημοσ. 1 Φεβρουαρίου 2013 ¨Εχεις απόλυτο δίκιο φίλε μου οτι πρέπει να ξεκινήσω με μια αλλά η κοινωνία και τα πανεπιστήμια δεν δίνουν αυτή τη δυνατότητα. Απλά μαθαίνεις διάφορα και φτιάχνεις ένα σαντουιτς με όλες τις γλώσσες μετα...
MitsakosGR Δημοσ. 1 Φεβρουαρίου 2013 Δημοσ. 1 Φεβρουαρίου 2013 Λάθος πράγμα κατάλαβα και απάντησα. Συγνώμη.
christian-ago Δημοσ. 1 Φεβρουαρίου 2013 Δημοσ. 1 Φεβρουαρίου 2013 Αν εννοεις τη jList τοτε αυτο που λες γινεται. Απλα στο συγκεκριμενο control δεν εχει κανει 'ολοκληρωμενη' δουλεια το Netbeans και χρειαζεται λιγη γραφη κωδικα για να οριστει σωστα η jList. Ειδικοτερα πρεπει να ορισεις ο ιδιος το DefaultListModel της jList. Εχει απαντηθει εδω. http://www.java-forums.org/netbeans/8865-adding-jlist-netbeans.html
migf1 Δημοσ. 2 Φεβρουαρίου 2013 Δημοσ. 2 Φεβρουαρίου 2013 ¨Εχεις απόλυτο δίκιο φίλε μου οτι πρέπει να ξεκινήσω με μια αλλά η κοινωνία και τα πανεπιστήμια δεν δίνουν αυτή τη δυνατότητα. Απλά μαθαίνεις διάφορα και φτιάχνεις ένα σαντουιτς με όλες τις γλώσσες μετα... Για να είμαι ειλικρινής δεν νομίζω πως φταίνε τα πανεπιστήμια, ούτε η κοινωνία Πέρα από την πλάκα, έχω την εντύπωση πως θεωρείς ότι μπορείς γρήγορα, ανέξοδα και εύκολα να προσθέσεις GUI στο πρόγραμμά σου, χωρίς να χρειάζεται να εμβαθύνεις έστω και σε μικρό βαθμό. Αυτό μπορεί να επιτευχθεί με κάποια RAD tools που δημιουργούν και κώδικα αυτόματα, αλλά προϋποθέτουν έτσι κι αλλιώς να έχεις καλή γνώση τουλάχιστον της γλώσσας που χρησιμοποιείς. Ειδικά για την δυναμική διαχείριση του GUI χρειάζεται να έχεις τουλάχιστον κατανοήσει τα βασικά του πως λειτουργεί το GUI σου (που όμως ευτυχώς σαν φιλοσοφία είναι πάνω-κάτω η ίδια στα δημοφιλή GUIs). Μετά είναι απλώς ζήτημα χρόνου να βρεις ποιες ρουτίνες του GUI API σου επιτρέπουν να προσθαφαιρείς γραφικά στοιχεία δυναμικά. Η δική μου πρόταση είναι να βρεις ένα δημοφιλές GUI για την γλώσσα στην οποία έχεις γράψει το πρόγραμμά σου, και να αρχίσεις να διαβάζεις την τεκμηρίωσή του, tutorials, βιβλία, κλπ. Επίσης, υπάρχει μεγάλη διαφορά μεταξύ του κώδικα που γράφεις για αλληλεπίδραση με τον χρήστη μέσω κονσόλας και του κώδικα που γράφεις για αλληλεπίδραση με τον χρήστη μέσω GUI. Στην πρώτη περίπτωση συνήθως τα πάντα λειτουργούν sequentially με blocked I/O, ενώ τα GUI είναι κατά κανόνα event-driven (με callback functions) κι ενίοτε με ασύγχρονο I/O.
goldenlion Δημοσ. 2 Φεβρουαρίου 2013 Μέλος Δημοσ. 2 Φεβρουαρίου 2013 Με έβαλες σε σκέψεις Ομολογώ οτι στα περισσότερα συμφωνώ μαζί σου φίλε μου. Λέω να δοκιμάσω με GTK+ πάνω στη C και ίσως ξαναεπιστρέψω στο παρόν νήμα για κάποια επιπλέον πληροφορία.
goldenlion Δημοσ. 3 Φεβρουαρίου 2013 Μέλος Δημοσ. 3 Φεβρουαρίου 2013 Επειδή σίγουρα στο μέλλον και κάποιος άλλος θα δεί το νήμα η απάντηση στην ερώτησή μου είναι: Για να δημιουργήσεις στατική δικιά σου λίστα χρησιμοποιείς την παρακάτω μέθοδο, 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 και το ενημερώνεις απο κάποια άλλη μεθοδο. Καλή συνέχεια...
migf1 Δημοσ. 6 Φεβρουαρίου 2013 Δημοσ. 6 Φεβρουαρίου 2013 Με έβαλες σε σκέψεις Ομολογώ οτι στα περισσότερα συμφωνώ μαζί σου φίλε μου. Λέω να δοκιμάσω με 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, είτε δυναμικά μέσα στον κώδικά σου)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα