Java JSpinner焦点问题

Java JSpinner焦点问题,java,macos,swing,look-and-feel,jspinner,Java,Macos,Swing,Look And Feel,Jspinner,我在Mac OS X上使用默认的外观。我创建了一个JSpinner,并在其关联的TextField对齐、颜色、不可编辑上设置了一些属性。旋转器工作正常;它有焦点,但并不表明它有焦点。也就是说,指示焦点的蓝色浅绿色L&F轮廓不存在。如果删除指定的代码部分,微调器将正确显示,显示它具有焦点,但我需要的属性不可用 我已经用Nimbus L&F运行了这个程序,所有东西都显示正确——属性和焦点都存在。但我需要苹果默认的aqua L&F。如果这是一个L&F问题,而不是我做错了什么,有没有其他方法可以让焦点正

我在Mac OS X上使用默认的外观。我创建了一个JSpinner,并在其关联的TextField对齐、颜色、不可编辑上设置了一些属性。旋转器工作正常;它有焦点,但并不表明它有焦点。也就是说,指示焦点的蓝色浅绿色L&F轮廓不存在。如果删除指定的代码部分,微调器将正确显示,显示它具有焦点,但我需要的属性不可用

我已经用Nimbus L&F运行了这个程序,所有东西都显示正确——属性和焦点都存在。但我需要苹果默认的aqua L&F。如果这是一个L&F问题,而不是我做错了什么,有没有其他方法可以让焦点正确显示

import java.awt.Color;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.JTextField;

public class SpinnerTest {
    public static void main(String[] args) {
        JSpinner spinner = new JSpinner();
        final JFrame frame = new JFrame("Frame");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(spinner);

        // Comment out this section to see focus set properly
            JComponent editor = spinner.getEditor();            
            JSpinner.DefaultEditor spinnerEditor = (JSpinner.DefaultEditor)editor;
            spinnerEditor.getTextField().setHorizontalAlignment(JTextField.CENTER);           
            spinnerEditor.getTextField().setForeground(Color.GREEN);
            spinnerEditor.getTextField().setEditable(false);
            spinnerEditor.getTextField().requestFocusInWindow();
        // End of this section

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
   }

}

spinnerEditor.getTextField.requestFocusInWindow;形成文档。如果此组件的顶级祖先已经是焦点窗口,则请求此组件获取输入焦点。如果帧还不可见,它肯定不是聚焦窗口。@Andrew,该行可以从代码中删除,程序仍然运行相同:作为帧上的第一个也是唯一一个对象,它确实获得了正确的聚焦,但没有显示它具有聚焦。当这种情况发生在一个大程序中时,用户不知道焦点在哪里;是的,我知道你其余的评论。但这可能是有用的进一步信息。对于其他人:很抱歉,我没有运行OSX,因此无法在此处真正测试它。顺便问一下,OSX的“默认”PLAF是什么?是水族原生格子呢还是金属呢?顺便说一句,如果你把spinnerEditor.getTextField.setHorizontalAlignmentJTextField.CENTER注释掉,我猜这种情况还是会发生的;spinnerEditor.getTextField.setForegroundColor.GREEN;?setEditablefalse呢;正如现在删除的答案中所建议的那样?@Andrew-我使用的是Aqua原生PLAF,我认为这是OS X的默认设置。对于CENTER和GREEN,这种情况仍然存在-spinner有焦点,但没有显示有焦点。使用seteditablecommented out或setEditabletrue时,会显示焦点,但我只希望微调器或键盘上的箭头键工作,因此我将其设置为false。