与JLabel一起使用时,JSpinner箭头位于奇数位置

时间:2014-12-10 03:02:22

标签: java swing format jspinner

你好我已经在里面创建了一个带JSpinner的JFrame(如图所示)。现在,BorderLabel在Jspinner中显示(应该如此),但JSpinner上的箭头作为整个事物的一部分而不仅仅是JSpinner字段。我想帮助找出如何将JSpinner箭头放在栏上。谢谢。

enter image description here

对于要求代码的人,

我也想念JLabel先生。我的意思是TitledBorder

import java.awt.ComponentOrientation;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;


public class ex extends JFrame{
    public static void main(String[] args){
        new ex();


    }
    ex(){
        super("test");
        setSize(200,100);
        SpinnerModel sm = new SpinnerNumberModel(3,1,25,1);
        JSpinner shiftIn = new JSpinner(sm);
        JPanel p = new JPanel();
        shiftIn.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
        shiftIn.setBorder(new CompoundBorder(new TitledBorder(new EmptyBorder(0,
                0, 0, 0), "Shift Key"), shiftIn
                .getBorder()));
        p.add(shiftIn);
        add(p);
        setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:4)

shiftIn.setBorder(new CompoundBorder(
    new TitledBorder(new EmptyBorder(0, 0, 0, 0), "Shift Key"), 
    shiftIn.getBorder()));

enter image description here

这不是为标题边框制作的那种东西!

使用JLabel并将其放在PAGE_START的{​​{1}}中,将BorderLayout放入JSpinner。添加当前添加微调器的容器(面板)。 (然后为标签添加助记符,并将其作为'旋转器的标签。)


这是如何在另一个布局中使用该想法(在此示例中为PAGE_END)..

enter image description here

GridLayout

答案 1 :(得分:4)

通过弄乱JSpinner的边界,您似乎遇到了风险。我自己,我会将我的JSpinner包装在JPanel中,然后将该包装器JPanel赋予所需的边框。例如:

import java.awt.BorderLayout;
import java.awt.ComponentOrientation;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;

@SuppressWarnings("serial")
public class Ex extends JFrame {
   public static void main(String[] args) {
      new Ex();

   }

   Ex() {
      super("test");
      setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      SpinnerModel sm = new SpinnerNumberModel(3, 1, 25, 1);
      JSpinner shiftIn = new JSpinner(sm);
      JPanel spinnerWrapper = new JPanel(new BorderLayout());
      spinnerWrapper.setBorder(BorderFactory.createTitledBorder(
            BorderFactory.createEmptyBorder(0, 0, 0, 0), "Shift Key"));
      spinnerWrapper.add(shiftIn);
      shiftIn.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
      add(spinnerWrapper);
      pack(); 
      setVisible(true);
   }
}