J'essaie de peindre des rectangles de couleur de largeur égale sous un JSlider de sorte que les graduations séparent les couleurs. Je suis vraiment proche, mais je ne peux pas l'obtenir tout à fait parfait. J'ai imprimé un tas de valeurs et mon problème est la largeur du curseur n'est pas la longueur réelle de la barre coulissante. La position x du curseur n'est pas non plus l'emplacement de départ de la barre. Voici mon code définissant mes limites de Rectangles colorés en termes de position des curseurs.Java Applet JSlider largeur
for(int i = 0; i < Global.emSpectrum.length; i++) //emSpectrum.length is the number of colored rectangles
{
emSpectrum.get(i).setColorRect(Global.emSpectrum[i], 13 + i * (int)((this.slider.getWidth())/Global.emSpectrum.length), //13 lines up the first color under the bar
this.slider.getY() + this.slider.getHeight()/2, (int)((this.slider.getWidth())/Global.emSpectrum.length),
(int)(Global.rectHeight * getHeight()));
}
Est-il juste une meilleure façon d'aller à ce sujet?
Merci!
Si vous ne recevez pas une réponse décente bientôt, envisager la création et l'affichage d'un (http://sscce.org) [sscce]. Cela nous aiderait beaucoup plus facilement, et vous obtiendrait probablement une solution décente plus tôt. –
Dans votre code, vous avez un commentaire, "13 lignes la première couleur sous la barre." Je suppose que vous l'avez étalonné manuellement, en changeant le nombre jusqu'à ce que vous l'obteniez juste à 13? Si c'est le cas, ce n'est * pas * le moyen de le faire. Que se passe-t-il si vous l'exécutez sur un système d'exploitation différent, avec un aspect différent (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html)? – wchargin
Envisagez d'utiliser une table d'étiquettes personnalisée pour votre JSlider. Vous devez le définir à l'aide de la méthode 'setLabelTable (...)' conformément à l'API. –