1

次のようなパネルがあります。

class A extends JPanel{
    private JButton button;

    A(int width, int height){
        setSize(width, height);
        button = new JButton("text");
        button.setIcon(IconLoadedHere);
        button.setBounds(50, 50, getWidth()/5, getHeight()/5);
        button.setBorder(BorderFactory.createEmptyBorder());
        add(button);
     }
}

JFrame は次のようなものです。

public class window extends JFrame{
    private JPanel panel;

    public window(){
        panel = new JPanel();
         setTitle("test");
         setSize(1280, 720);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         setVisible(true);
    }
    public void loadA(){
         remove(panel);
         panel = new A(getWidth(), getHeight());
             add(panel);
         validate();
    }
}

ボタンには2つの問題があります:

  1. 画像の上にテキストを配置したいのですが、それは可能ですか (できれば画像の中央に)? 現在、その左側に表示されます。(解決済み)

  2. 何らかの奇妙な理由setBoundsで機能しないため、ボタンは常に上部中央に表示されます (レイアウトなしでのみ使用できるようです。ボタンの場所とサイズを設定する代替手段はありますか?)

また、1 つの質問: ウィンドウのサイズを変更したい場合、それに応じてボタンとテキストのサイズを変更するにはどうすればよいですか? (現在、それらを1つずつ変更することで解決策が見つかりました。他に方法はありますか?)

4

2 に答える 2

3

ボタンでのテキストの表示方法を制御するには、次を使用する必要があります。

button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);

これにより、テキストがボタンの中央に配置されます。

デフォルトでは、テキストの水平位置はTRAILINGに設定されているため、アイコンの横に配置されます。

質問のレイアウト部分については、公式チュートリアルの関連部分を実際に読む必要があります。TLDR:レイアウトマネージャーを使用してください。レイアウトマネージャーがサイズ変更と配置を行います。

于 2013-02-04T18:23:08.330 に答える
1

setBounds() は絶対レイアウトを使用する場合にのみ機能しますが、JPanel はデフォルトで FlowLayout を使用します。それを無効にするには

panel.setLayout(null);

ただし、絶対レイアウトでは、x/y/幅/高さも手動で設定する必要があるため、通常はレイアウトを使用することをお勧めします。

于 2013-02-04T18:13:48.137 に答える