3

JTextFieldの右端にあるように、JTextField内にJButton(フォルダーアイコン画像付き)を配置して、ボタンをクリックすると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

4 に答える 4

6

コンポーネントの境界線が役立つ場合があります。Border APIを使用して、テキストフィールドにボタンを表示できます。

于 2010-09-08T21:01:13.013 に答える
4

テキストフィールドにボタンを配置したくない場合 はありません。あなたはあなたの意図をいくつかの要素に分割する必要があります-3、実際には。

まず、親コンテナ、またはテキストフィールドとボタンの両方を含むものが必要になります。でJPanel十分です。

次に、実際のコンポーネントが必要です。実際には、実際に何かを実行するコンポーネントを意味します。これらはあなたのものですJTextField-JButton先に進んで、これらをに追加してJPanelください。それらを追加して、(隅にあるボタンを使用して)希望どおりに表示するには、のレイアウトを指定する必要がありますJPanel。このレイアウトは、追加されたコンポーネントが内のどこに(視覚的に)配置されるかを定義しますJPanel

これらのものをに追加したので、含まれているとの観点から考えるのではなく、JPanel自分だけで作業できます。JPanelJTextFieldJButton

于 2010-09-08T20:14:02.547 に答える
4

Shakedownの提案に基づいて、比較的簡単に目的の効果を得ることができると思います。あなたがしているJPanelことは、テキスト領域とその横にあるボタンの両方を含むを持っていることです。次に、境界線を描画しないようにテキストフィールドを設定しJPanel、斜角の境界線を付けます。これで、ボタンがテキスト領域内にあるように見えます。微調整が必​​要な場合もありますが、機能するはずです。

于 2010-09-08T20:26:48.543 に答える
2

パイライトは彼の最終的な解決策を投稿していないので、ここに私のものがあります:

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 に答える