J'ai un JSPINNER qui affiche des valeurs décimales de 0,0 à 999,0. Il semble fonctionner correctement, à l'exception du moment où il affiche un numéro dans la zone de rédaction à quatre chiffres, tels que 123,4; Il coupe ensuite une partie du chiffre final car il n'est pas assez long. P>
Donc, ma question est la suivante: Est-ce que quelqu'un sait-il augmenter la longueur de la fenêtre de l'éditeur d'un JSPINNER? P>
merci! p>
5 Réponses :
Vous pouvez accéder au champ de texte qui est en fait un EDIT: Comme indiqué par TrashGOD cependant, l'utilisation d'une disposition appropriée est primordiale et que vous êtes sûr que les dispositions que vous utilisez sont les meilleures est probablement la meilleure façon de résoudre ce problème. P> Edit 2: Strong> Ce qui précède est faux car régler la taille préférée de la Textfield ne fait rien. Vous pouvez toutefois définir la taille préférée de l'éditeur lui-même, et cela fonctionne. E.g., P> jformattedtextfield code> par
getEditor () code> sur votre JSPINNER pour obtenir l'éditeur de Spinner Li>
jspinner.defauletoritor code> li>
gettextfield () code> à ce sujet. Ensuite, vous pouvez définir que c'est préférable. LI>
ul>
import java.awt.Dimension;
import javax.swing.*;
public class SpinnerBigTextField {
private static void createAndShowGui() {
JSpinner spinner = new JSpinner(new SpinnerNumberModel(0.0, 0.0, 999.0,
0.5));
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 100));
panel.add(spinner);
JComponent field = ((JSpinner.DefaultEditor) spinner.getEditor());
Dimension prefSize = field.getPreferredSize();
prefSize = new Dimension(200, prefSize.height);
field.setPreferredSize(prefSize);
JFrame frame = new JFrame("SpinnerBigTextField");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
+1 boxlayout code> A>, qui respecte les tailles préférées, est particulièrement utile dans ce contexte.
@ Hovercraft pleine d'anguilles pas d'agence à votre personne, juste contre Robules retourne de préférence de l'éditeur, je pense dans la plupart des cas que c'est exactement le travail pour le programmateur non pour layoutManager, si je sais qu'il y a 4-5 possibilités numériques ... ou éventuel négatif Le signe numérique, est toujours là de plus en plus de 5 à 8 pixels horizontalement et 2-5 verticalement pour un look non laid, comment résoudre ce problème sans exactement sur JSPINNER # SetPreFerredSize (), BTW +1 pour extraire le composant de composé JCCONTENT
@ Hovercraft plein d'anguilles: fonctionne parfaitement. Merci!
J'ai posé un Variation qui s'appuie sur le composant préféré Taille.
comme FontMetrics code> varie d'une plate-forme à l'autre, il vaut mieux compter sur le calcul du composant de la taille préférée. Cet exemple montre un spectre de la taille code> jSpinner code> pour diverses
min code> et
max code>. Notez en particulier que
flowlayout code> < / a> "laisse chaque composant suppose sa taille naturelle (préférée)."
< / p>
La première réponses d'aéroglisseur n'est pas mauvaise du tout. Vous ne pouvez pas changer la taille directement, mais vous pouvez faire quelque chose comme ceci: où vous pouvez définir les numéros de colonnes montrés par l'éditeur. Cela changera la taille de la spinner. p> p>
Merci beaucoup pour le simple exemple de 3 lignes! Je cherche partout pour ça :)
Modification de la valeur max d'une fileuse augmentera la taille de la zone de texte pour accueillir le grand nombre. Si vous ne souhaitez pas faire de la valeur maximale plus grande, je recommanderais ce que @gorgehortelano a suggéré ... p>
jcomponent éditeur = myspinner.getitor (); Jformattedtextfield tf = ((jspinner.defauléditor) éditeur) .gettextfield (); tf.setColumns (4); P> blockQuote>
JSpinner spn=new JSpinner(); spn.setPreferredSize(new Dimension(100,25)); Here,look This is the easy Answer.
Quelle est la mise en page du conteneur dans lequel vous placez la spinner? Un SSCCE serait idéal.
J'ai supprimé ma réponse comme lorsqu'il est testé, c'était mal.