5

私はJavaで小さなGuiをやっています。私は setBounds メソッドを使用して JFrame のボタンなどの位置を設定していますが、問題は JPanel で使用するとボタンが JFrame に表示されず、JPanel がないとまったく問題ないことです。両方のコードを参照してください。私は初心者で、これらのばかげた問題に直面しています。

これはうまく機能しています

  JFrame jframe = new JFrame("Working Fine");  
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);  
  jframe.add(jbutton);  
  jframe.setSize(300,300);
  jframe.setVisible(true);

ボタンをJpanelに追加すると同じコードが機能しないので、どうしたのでしょうか。

  JFrame jframe = new JFrame("causing problem ");
  jframe.setSize(300,300);
  JPanel p = new JPanel();
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);
  jframe.add(p);
  p.add(jbutton);
  p.setVisible(true);
 //jframe.add(jbutton);  
  jframe.setVisible(true);

この小さな問題で私を助けてください

4

2 に答える 2

11

絶対位置を設定するには、JPanel のレイアウトを取り除く必要があります。

p.setLayout(null);

于 2013-06-13T00:16:02.433 に答える
7

問題は、絶対配置を使用すると、JPanelコンポーネントにデフォルトのサイズがないため表示されないことです。それを表示するには、次のことができます

JFrame frame = new JFrame("No Problem");
JPanel panel = new JPanel() {
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 300);
    };
};
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton button = new JButton("Position Test");
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);

レイアウトマネージャーなしでやるより

レイアウト マネージャーがなくても実行できますが、可能であればレイアウト マネージャーを使用する必要があります。レイアウト マネージャーを使用すると、ルック アンド フィールに依存するコンポーネントの外観、さまざまなフォント サイズ、コンテナーのサイズの変更、およびさまざまなロケールへの調整が容易になります。

レイアウト マネージャーの選択は、コンポーネントをどのようにレイアウトするかによって異なります。

レイアウト マネージャーのビジュアル ガイド を参照してください。

于 2012-11-29T19:51:20.963 に答える