首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在JTextField中限制可以插入字符的区域?

问是否可以在JTextField中限制可以插入字符的区域?
EN

Stack Overflow用户
提问于 2022-10-12 09:26:53
回答 1查看 54关注 0票数 0

我有一个JTextField,它的东侧有一个JButton。此时,当插入的字符到达按钮时,文本重叠的部分会插入到按钮下面。

这里有一个片段来重现这个问题

代码语言:javascript
复制
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:如果我将JTextField和JButton添加到JPanel中,它就像一个魅力,但我有一些限制,不幸的是,目前这种方法是不可行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 15:02:06

我解决了使用FlatLaf外观和感觉(https://www.formdev.com/flatlaf/)。这样,在JTextField文本和图标上设置特定属性不再重叠。具体而言,我做到了:

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74039531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档