gpt4 book ai didi

java - 更改 JTextField 滚动 Pane 文本填充/偏移一些像素

转载 作者:行者123 更新时间:2023-11-30 02:55:10 25 4
gpt4 key购买 nike

我正在尝试对齐 JTextField 内文本的位置(开始 + 结束),但我无法找到和/或理解如何执行此操作...

example of what is wrong and what i'm looking for:

setHorizo​​ntalAlignment 方法只允许这样做......:

•JTextField.LEFT 
•JTextField.CENTER
•JTextField.RIGHT
•JTextField.LEADING
•JTextField.TRAILING

对于 Android 项目,这很容易...但是对我来说,在做 swing 项目时我无法弄清楚这一点...这怎么能完成?

编辑:

我已经能够通过使用双(又名分层)JTextFields 对此进行排序。 emptyborder() 虽然代码更简单,但会删除所有 JTextField 框架边框,留下一个大的空方 block ,对于输入框来说,这不是一个好主意......这是一张图片和一些代码示例:

JTextField Padding Working example

import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

public class TextBoxOffset {

public static void main(String[] a) {

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setSize(300, 300);
frame.setVisible(true);

JLabel label1 = new JLabel("JTextField, using CreateEmptyBorder");
label1.setHorizontalAlignment(SwingConstants.CENTER);
label1.setFont(new Font("Tahoma", Font.PLAIN, 11));
label1.setBounds(0, 125, 284, 23);
frame.getContentPane().add(label1);

//Creates a new JTextField with a emptyborder
JTextField emptyborder = new JTextField();
emptyborder.setBounds(22, 164, 250, 43);
emptyborder.setBorder(new EmptyBorder(5, 17, 5, 15));
frame.getContentPane().add(emptyborder);

JLabel label2 = new JLabel("JTextField, using double (layered) JTextFields");
label2.setFont(new Font("Tahoma", Font.PLAIN, 11));
label2.setHorizontalAlignment(SwingConstants.CENTER);
label2.setBounds(0, 22, 284, 23);
frame.getContentPane().add(label2);

// Creates a new input field, layered above the (disabled) JTextField background object
JTextField inputbox = new JTextField();
inputbox.setBounds(40, 61, 216, 31);
inputbox.setBorder(null);
frame.getContentPane().add(inputbox);

// Creates a border for the input text field that will serve as a background
JTextField bg = new JTextField();
bg.setBounds(22, 56, 250, 43);
frame.getContentPane().add(bg);
bg.setEnabled(false);

// Grab the overlayed inputbox focus
inputbox.requestFocusInWindow();
}
}

如果有人知道更好、更简单的方法来做到这一点,意思是,控制 JTextField(或任何其他重要字段)内所有侧面(顶部、左侧、底部、右侧)的文本填充(例如:控制按钮内文本的位置)而不使用双 JTextFields,请发表回复。

最佳答案

我认为您想向文本字段添加边框:

textField.add( new EmptyBorder(...) );

阅读 Swing 教程中关于 How to Use Borders 的部分了解更多信息和示例。

i can't figure this one out, when doing a swing project.

保留 Swing 教程的链接,以了解 Swing 基础知识。

编辑:

哎呀,我忘了 JTextField 也有一个特殊的方法来控制它:

textField.setInsets(...);

因此您不需要CompoundBorder,但是您仍然了解CompoundBorder 提供的灵 active 。

关于java - 更改 JTextField 滚动 Pane 文本填充/偏移一些像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com