【问题标题】:how to center text of a JSpinner如何使 JSpinner 的文本居中
【发布时间】:2014-05-07 06:37:59
【问题描述】:

我的问题不言自明:如何使 JSpinner 的文本居中?方法 setHorizo​​ntalAligment 不存在。我也尝试了 setAlignmentX,仍然没有...任何帮助将不胜感激 c:

【问题讨论】:

    标签: java swing jspinner center-align


    【解决方案1】:

    JSpinner 是其他组件的容器,其中一个是编辑器。

    JSpinner spinner = ...;
    JComponent editor = spinner.getEditor();
    

    但这对我们没有帮助,因为setHorizontalAligment 不是JComponent 的方法。

    然后您可以检查 editor 类型的组件...

    if (editor instanceof JSpinner.DefaultEditor) {
    

    如果是JSpinner.DefaultEditor,你可以投射它并使用setHorizontalAlignment...

    JSpinner.DefaultEditor spinnerEditor = (JSpinner.DefaultEditor)editor;
    spinnerEditor.getTextField().setHorizontalAlignment(JTextField.CENTER);
    

    您可能还需要检查JTextField,但如果您使用默认编辑器模型,它通常会返回JSpinner.DefaultEditor

    【讨论】:

    • 遗憾的是,JSpinner 似乎没有 JTextField 的实例...但是感谢您的快速回答!
    • 非常感谢!这工作得很好!我讨厌文本以某种方式在右边。再次感谢! :)
    • @user3342795 是的,爱微调:P
    • 我想在这个答案中添加几件事:1)这种行为的原因是apparently JSpinner 组件使用父控件的属性创建其内部TextField首次渲染时的值,然后忽略对父属性值的更改。 2) 如果在 MATLAB 中使用 JComponents,调用例如就足够了。 jSpinner.getEditor.getTextField.setHorizontalAlignment(javax.swing.JTextField.LEFT); 得到想要的效果。
    • jSpinner.getEditor.getTextField.setHorizontalAlignment(javax.swing.JTextField.L‌​EFT); ... 这基本上就是答案所说的
    猜你喜欢
    • 2016-09-30
    • 2015-07-13
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多