java - 更改 JSpinner 的文本字段位置

标签 java swing layout jspinner

我想自定义一点 swing java API 的基本 JSpinner。 基本上,我想移动最初位于箭头按钮左侧的文本字段组件。相反,texfield 将被涂在微调器的两个箭头之间,这样一个箭头在 textfield 的顶部,一个箭头在 texfield 的下方。 但我不知道如何进行...

有人有想法吗?

最佳答案

您可以覆盖 JSpinner 的 setLayout(LayoutManager) 方法以使用自定义 LayoutManager。

enter image description here

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SpinnerLayoutTest {
  public JComponent makeUI() {
    SpinnerNumberModel m = new SpinnerNumberModel(10, 0, 1000, 1);
    JSpinner spinner = new JSpinner(m) {
      @Override public void setLayout(LayoutManager mgr) {
        super.setLayout(new SpinnerLayout());
      }
    };
    JPanel p = new JPanel(new BorderLayout(5,5));
    p.add(new JSpinner(m), BorderLayout.NORTH);
    p.add(spinner, BorderLayout.SOUTH);
    p.setBorder(BorderFactory.createEmptyBorder(16,16,16,16));
    return p;
  }
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      @Override public void run() {
        createAndShowGUI();
      }
    });
  }
  public static void createAndShowGUI() {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.getContentPane().add(new SpinnerLayoutTest().makeUI());
    f.setSize(320, 160);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
  }
}
class SpinnerLayout extends BorderLayout {
  @Override public void addLayoutComponent(Component comp, Object constraints) {
    if("Editor".equals(constraints)) {
      constraints = "Center";
    } else if("Next".equals(constraints)) {
      constraints = "North";
    } else if("Previous".equals(constraints)) {
      constraints = "South";
    }
    super.addLayoutComponent(comp, constraints);
  }
}

关于java - 更改 JSpinner 的文本字段位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900912/

相关文章:

java - JButton 鼠标悬停在运动监听器上的小信息框(工具提示)

java - 如何保护 chromedriver 使用的端口?

java - 读我自己的Jar list

Java/JRuby on Rails 与 .NET 3.5...感觉我做错了

java - 应用程序在几秒钟的闪屏后将一个 Activity 移动到另一个 Activity 时崩溃

java - 使用 Enum 类填充 JComboBox

java - 如何将多个项目添加到 DefaultComboBoxModel

c# - 没有内置的 C# GUI 布局吗?

android - 选择器不适用于布局和 ImageView

javascript - 带有下拉菜单和按钮的 Flexbox 布局