21

JFrameの特定の座標にJbutton を配置したいと考えています。JPanel (JFrame に配置) に setBounds を配置し、JButton にも setBounds を配置しました。ただし、期待どおりに機能していないようです。

私の出力:

代替テキスト

これは私のコードです:

import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Control extends JFrame {

    // JPanel
    JPanel pnlButton = new JPanel();
    // Buttons
    JButton btnAddFlight = new JButton("Add Flight");

    public Control() {
        // FlightInfo setbounds
        btnAddFlight.setBounds(60, 400, 220, 30);

        // JPanel bounds
        pnlButton.setBounds(800, 800, 200, 100);

        // Adding to JFrame
        pnlButton.add(btnAddFlight);
        add(pnlButton);

        // JFrame properties
        setSize(400, 400);
        setBackground(Color.BLACK);
        setTitle("Air Traffic Control");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Control();
    }
}

JButton座標 (0, 0) をどのように配置できますか?

4

6 に答える 6

23

コンポーネントを追加する前に、次の行を呼び出す必要があります

pnlButton.setLayout(null);

上記は、絶対レイアウトを使用するようにコンテンツ パネルを設定します。これは、メソッドを使用してコンポーネントの境界を明示的に設定する必要があることを意味しますsetBounds

一般に、絶対レイアウトの使用はお勧めしません。

于 2010-07-07T14:29:05.033 に答える
4

child.setLocation(0, 0)ボタン、および で使用しますparent.setLayout(null)。JFrame で setBounds(...) を使用してサイズを変更する代わりに、just を使用しsetSize(...)て OS にフレームを配置させることを検討してください。

//JPanel
JPanel pnlButton = new JPanel();
//Buttons
JButton btnAddFlight = new JButton("Add Flight");

public Control() {

    //JFrame layout
    this.setLayout(null);

    //JPanel layout
    pnlButton.setLayout(null);

    //Adding to JFrame
    pnlButton.add(btnAddFlight);
    add(pnlButton);

    // postioning
    pnlButton.setLocation(0,0);
于 2010-07-07T14:28:29.623 に答える
2

私はそれを理解しました笑。ボタンの do .setBounds(0, 0, 220, 30) .setBounds レイアウトは次のようになります (int x, int y, int width, int height)

于 2013-04-21T22:15:58.227 に答える
2

consts をどこかに定義します。

private static final int BUTTON_LOCATION_X = 300;  // location x 
private static final int BUTTON_LOCATION_Y = 50;   // location y 
private static final int BUTTON_SIZE_X = 140;      // size height
private static final int BUTTON_SIZE_Y = 50;       // size width

そして以下:

                JButton startButton = new JButton("Click Me To Start!");
                // startButton.setBounds(300, 50,140, 50 );
                startButton.setBounds(BUTTON_LOCATION_X
                                    , BUTTON_LOCATION_Y,
                                      BUTTON_SIZE_X, 
                                      BUTTON_SIZE_Y );
                contentPane.add(startButton);

フレーム全体を 保持するオブジェクトcontentPaneは次のとおりです。Container

 JFrame frame = new JFrame("Some name goes here");
 Container contentPane = frame.getContentPane();

これが役に立てば幸いです、私にとってはうまくいきます...

于 2013-08-10T07:34:40.403 に答える