【问题标题】:Adjust JTextField default alignment调整 JTextField 默认对齐方式
【发布时间】:2014-02-24 02:19:52
【问题描述】:

我创建了 10 个 JTextField,现在我想将它们对齐到右侧。我知道这可以用[nameTextField].setHorizontalAlignment(JTextField.RIGHT); 完成,但我想知道这是否可以用一行代码完成。由于JTextField.setHorizontalAlignment(JTextField.RIGHT);,不起作用,我的问题是:这可能吗?

【问题讨论】:

    标签: java alignment jtextfield


    【解决方案1】:

    由于JTextField.setHorizontalAlignment(JTextField.RIGHT); 不起作用

    让我们先了解一下为什么这不起作用。如果我们查看JTextField 的文档,我们可以看到它包含在Method Summary heading 下的所有方法。它有一个方法setHorizontalAlignment(int alignment),它返回void。请注意,该方法未声明为static(查看最左边的列,其中显示void)。由于该方法不是静态的,因此我们不能在类本身上调用它,而只能在类的实例上调用它。

    这可能吗?

    我认为你有两个选择:

    1. 您可以继承JTextField,将其命名为RightAlignedTextField,并默认设置对齐方式。然后,您可以使用它而不是普通的 ol'JTextField。或
    2. 您可以编写一个方法来调整您计划使用的所有文本字段的对齐方式。

    在示例中同时使用两者:

    import javax.swing.*;
    import java.awt.*;
    class RightAlignedTextField extends JTextField {
        public RightAlignedTextField(int columns) {
            super(columns);
            this.setHorizontalAlignment(RIGHT);
        }
    }
    public class Q21970358 extends JFrame {
        private final static long serialVersionUID = 0L;
        private JTextField t1 = new JTextField(30);
        private JTextField t2 = new JTextField(30);
        private JTextField t3 = new JTextField(30);
        private JTextField t4 = new JTextField(30);
        private JTextField t5 = new JTextField(30);
        private JTextField t6 = new RightAlignedTextField(30);
        public Q21970358() {
            super("Stack Overflow Q21970358");
            this.addTextFields();
            this.setVisible(true);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.setMinimumSize(new Dimension(400, 300));
        }
        public void alignAllRight(JTextField... fields) {
            for (JTextField t : fields) {
                t.setHorizontalAlignment(JTextField.RIGHT);
            }
        }
        public void addTextFields() {
            // Set all to align right
            // This is the part you're looking for
            // (2)
            this.alignAllRight(t1, t2, t3, t4, t5);
            JPanel panel = new JPanel();
            panel.add(t1);
            panel.add(t2);
            panel.add(t3);
            panel.add(t4);
            panel.add(t5);
            panel.add(t6); // (1)
            this.add(panel);
        }
        public static void main(String[] args) { new Q21970358(); }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2011-12-10
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多