我有一個 JTextField,里面有一個 JButton,位于東側。目前,當插入的字符到達按鈕時,重疊的文本部分會插入到它的下方。
這是重現問題的片段
class TextFieldWithIconLauncher {
public static void main(String[] args) {
JTextField modelFileTField = new JTextField();
modelFileTField.setLayout(new BorderLayout());
JButton button = new JButton("click");
button.addActionListener(listener -> System.err.println("clicked!"));
modelFileTField.add(button, BorderLayout.EAST);
JFrame frame = new JFrame();
frame.setSize(200, 100);
frame.add(modelFileTField);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setMinimumSize(new Dimension(200, 100));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
相反,這些是真實情況的截圖


我想避免文本與按鈕重疊,而不限制用戶可以插入的字符數。
PS:如果我在 JPanel 中添加 JTextField 和 JButton ,它就像一個魅力,但我有一些限制,不幸的是,這種方法目前不可行
uj5u.com熱心網友回復:
我解決了使用 FlatLaf 外觀 ( https://www.formdev.com/flatlaf/ )。這樣,在 JTextField 文本和圖示上設定特定屬性不再重疊。具體來說,我做了:
class TextFieldWithIconLauncher {
public static void main(String[] args) {
JTextField textField = new JTextField();
textField.setLayout(new BorderLayout());
JButton button = new JButton("click");
button.addActionListener(listener -> System.err.println("clicked!"));
textField.add(button, BorderLayout.EAST);
//Property to set
textField.putClientProperty(FlatClientProperties.TEXT_FIELD_TRAILING_COMPONENT, button);
JFrame frame = new JFrame();
frame.setSize(200, 100);
frame.add(modelFileTField);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setMinimumSize(new Dimension(200, 100));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523037.html
標籤:爪哇摇摆按钮文本字段
上一篇:像BoxLayout一樣垂直居中GridBagLayout
下一篇:如何在MASM中跨段填充塊?
