3

I would like to have a JButton (with a folder icon image) inside a JTextField, like over on the far right of the JTextField, so that when clicked, the button opens up a JFileChooser, and when a file is selected, the path to该文件出现在 JTextField 中。

我已经制作了这段代码,但没有任何显示。

public class TextFieldChooser extends JTextField {

    public ImageIcon folderIcon;
    public JButton btnFolder;

    public TextFieldChooser(int columns) {
        super(columns);
        btnFolder = new JButton();
        folderIcon = new ImageIcon(getClass().getResource("/resources/folder_find.png"));
        btnFolder.setIcon(folderIcon);
        this.add(btnFolder);

    }
}
4

4 回答 4

6

您可能会发现组件边框很有帮助。它允许您使用 Border API 在文本字段中显示一个按钮。

于 2010-09-08T21:01:13.013 回答
4

在 Shakedown 建议的基础上,我认为您可以相对轻松地获得所需的效果。您所做的是拥有一个JPanel既包含文本区域,又包含按钮的按钮。接下来,将文本字段设置为不绘制任何边框并提供JPanel斜角边框。现在看起来按钮在文本区域内。这可能需要一些微调,但它应该可以工作。

于 2010-09-08T20:26:48.543 回答
4

不能 不想在文本字段中放置一个按钮。您需要将您的意图分解为几个组件 - 实际上是 3 个。

首先,您将需要一个父容器,或者包含您的文本字段和按钮的东西;一个JPanel就足够了。

然后你需要你真正的组件,真正的我是指那些真正做某事的组件。这些是您的JTextField-JButton继续并将这些添加到JPanel. 为了添加它们并让它们以您想要的方式显示(使用角落中的按钮),您需要为您的JPanel. 此布局将定义添加的组件在JPanel.

现在您已将这些东西添加到您的JPanel中,您可以只使用您的而不是根据包含的和JPanel来思考。JTextFieldJButton

于 2010-09-08T20:14:02.547 回答
2

因为 Pyrite 还没有发布他的最终解决方案,所以这是我的:

my_button = new JButton("x");
JFormattedTextField my_textfield = new JFormattedTextField("Nr.");
my_textfield.setBorder(javax.swing.BorderFactory.createEmptyBorder());

JPanel textfield_with_button = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
Border lowered_bevelborder = BorderFactory.createLoweredBevelBorder();
textfield_with_button.setBorder(lowered_bevelborder);

textfield_with_button.add(my_textfield);
textfield_with_button.add(my_button);

在此处输入图像描述

于 2016-07-08T08:04:54.913 回答