Δημιουργήστε ένα ωραίο Codename Ένα ρυθμιστικό για να κοινοποιήσει ένα ποσοστό

ψήφοι
1

Σημείωση για τους αναγνώστες: αυτό το ερώτημα είναι συγκεκριμένο για Codename One, δεν είναι για css, html ή κάτι παρόμοιο.

Περίπτωση χρήσης μου είναι να ενημερώσει τον χρήστη πόσα προφίλ του / της είναι πλήρης. Θα πρέπει να εφαρμόσει ένα ρυθμιστικό, όπως το παρακάτω, αλλά μετά από πολλές δοκιμές με το στοιχείο Slider δεν είχα καταλάβει πώς να την εφαρμόσουν. (Ειλικρινά δεν είχα καν καταλάβει πώς να αρχίσει η εφαρμογή του και δεν ξέρω αν το συστατικό Slider είναι κατάλληλη.)

Το πλάτος του δρομέα πρέπει να είναι ίσο με το contentPane της μητρικής φόρμας. Βασικά είναι ένα ορθογώνιο με μια μικρή σύνορα: ένα μέρος του ορθογωνίου είναι έγχρωμο, το άλλο είναι λευκό, σύμφωνα με το ποσοστό. Πάνω από το ορθογώνιο που χρειάζομαι το ποσοστό και το κείμενο: ποσοστό και το κείμενο είναι σε σταθερή θέση. Το χρώμα του κειμένου αλλάζει ανάλογα με το χρώμα του φόντου, όπως εμφανίζεται στη δεύτερη εικόνα.

Σας ευχαριστώ για οποιαδήποτε βοήθεια.

εισάγετε εισάγετε

Δημοσιεύθηκε 20/10/2018 στις 12:39
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Αυτό είναι αρκετά εύκολο, εκτός από την αλλαγή του χρώματος. Πρόκειται για το τμήμα απαιτεί το χέρι κωδικοποίηση των γραφικών. Δεν εκτελέσετε αυτόν τον κώδικα, αλλά θα πρέπει να είναι αρκετά κοντά για το πώς αυτό θα λειτουργήσει:

class ProgressSlider extends Component {
    protected Dimension calcPreferredSize() {
        return new Dimension(convert(getDisplayWidth(), 6));
    }

    public void paint(Graphics g) {
         g.setColor(0xffffff);
         g.fillRect(getX(), getY(), getWidth(), getHeight());
         g.setColor(0);
         Font f = getStyle().getFont();
         g.drawString(progressPercetage, convert(4) + getX(), getY() + f.getHeight() / 2 + getHeight() - 2);
         g.drawString(progressText, convert(10) + getX(), getY() + f.getHeight() / 2 + getHeight() - 2);
         g.setColor(RED);
         g.fillRect(getX(), getY(), getWidth() / 100 * progressPercentage, getHeight());
         g.setColor(0xcccccc);
         g.drawRect(getX(), getY(), getWidth() - 1, getHeight() - 1);
         g.clipRect(getX(), getY(), getWidth() / 100 * progressPercentage, getHeight());
         g.setColor(0xffffff);             
         g.drawString(progressPercetage, convert(4) + getX(), getY() + f.getHeight() / 2 + getHeight() - 2);
         g.drawString(progressText, convert(10) + getX(), getY() + f.getHeight() / 2 + getHeight() - 2);
    }
}

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

Απαντήθηκε 20/10/2018 στις 19:34
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more