1. ホーム
  2. ジャワ

[解決済み] JLabelにsetBoundsメソッドを使用するには?

2022-03-04 11:38:28

質問

ウィンドウアプリケーションで Swing . 私は setBounds() メソッドで JLabel のスペーシングがうまくいきません。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FullScreenJFrame extends JFrame
{
  public FullScreenJFrame( String title )
  {
      super(title);
      //JFrame frame = new JFrame();
      this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      setUndecorated(true);
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      setBounds(0,0,screenSize.width, screenSize.height);
      getContentPane()
      .add(new JLabel("    HIGHCOURT OF JUDICATURE AT ALLHAHABAD"), BorderLayout.NORTH);
      JLabel label = new JLabel("JJ");
      label.setBounds(20, 20, 150, 20);

      // label.setText(s);
      add(label);
  }

  public static void main( String[] args )
  {
      FullScreenJFrame frame = new FullScreenJFrame("");
      //JFrame frame1 = new JFrame();
      //JLabel label = new JLabel("dd");
      //label.setBounds(370, 340, 150, 20);
      //frame1.add(label);
      frame.setVisible(true);
  }
}

解決方法は?

nullレイアウトは推奨されますか?他の方がおっしゃっているように、その答えは

NO

. 参照 コンテナ内のコンポーネントをレイアウトする LayoutManager の練習をするために


それでも私はあなたの質問に答えますか?もちろんです、念のため。

<ブロッククオート

"JLabelのスペーシングにsetBounds()メソッドを使用していますが、うまくいきません。なぜうまくいかないのか、どなたか教えてください"

はい、境界線が機能していないのは JFrame は、デフォルトの Borderlayout . を使用するためには setBounds を動作させるには、レイアウトが null .

setLayout(null);

また、以下のような場合にも留意してください。 する NULLレイアウトを使用すると、その中で しない setBounds は表示されません。


参照 コンテナ内のコンポーネントをレイアウトする LayoutManagerの練習をするために