我有一个JSpinner显示从0.0到999.0的十进制值.它似乎工作正常,除了它在编辑器框中显示一个长度为四位数的数字,例如123.4;然后它会切断部分最后一位数,因为它不够长.
@H_301_2@所以我的问题是:有谁知道如何增加JSpinner编辑器窗口的长度?
@H_301_2@谢谢!
解决方法
您可以访问实际上是JFormattedTextField的文本字段
@H_301_2@>首先在JSpinner上调用getEditor()来获取微调器的编辑器
>将返回的对象强制转换为JSpinner.DefaultEditor
>然后在此调用getTextField().然后,如果需要,您可以设置它的preferredSize. @H_301_2@编辑:正如trashgod所述,使用适当的布局是至关重要的,并确保您使用的布局是最好的可能是解决此问题的最佳方法. @H_301_2@编辑2:以上是错误的,因为设置文本字段的首选大小什么都不做.但是,您可以设置编辑器本身的首选大小,这是有效的.例如,
>将返回的对象强制转换为JSpinner.DefaultEditor
>然后在此调用getTextField().然后,如果需要,您可以设置它的preferredSize. @H_301_2@编辑:正如trashgod所述,使用适当的布局是至关重要的,并确保您使用的布局是最好的可能是解决此问题的最佳方法. @H_301_2@编辑2:以上是错误的,因为设置文本字段的首选大小什么都不做.但是,您可以设置编辑器本身的首选大小,这是有效的.例如,
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(); } }); } }