如何将JButton放在JTextField(Java)中?

时间:2010-09-08 20:05:26

标签: java jbutton jtextfield jfilechooser

我想在JTextField中有一个JButton(带有一个文件夹图标图像),就像在JTextField的最右边那样,所以当点击时,该按钮会打开一个JFileChooser,当选择一个文件时,文件的路径出现在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 个答案:

答案 0 :(得分:6)

您可能会发现Component Border有帮助。它允许您使用Border API在文本字段中显示按钮。

答案 1 :(得分:5)

基于Shakedown的建议,我认为你可以相对容易地获得所需的效果。你所做的是JPanel包含文本区域和旁边的按钮。接下来,将文本字段设置为不绘制任何边框,并为JPanel提供斜角边框。现在它看起来像按钮在文本区域内。它可能需要一些微调,但它应该有效。

答案 2 :(得分:4)

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

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

然后你需要你的真实组件,而真实的我指的是那些真正做某事的人。这些是您的JTextFieldJButton - 继续将这些内容添加到JPanel。为了添加它们并让它们显示您想要的效果(使用角落中的按钮),您需要为JPanel指定布局。此布局将定义添加的组件在JPanel内(视觉上)的位置。

现在您已将这些内容添加到JPanel中,您只能使用JPanel,而不是根据所包含的JTextFieldJButton进行思考。

答案 3 :(得分: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_border.setBorder(lowered_bevelborder);

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

enter image description here