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)に配置するにはどうすればよいですか?
コンポーネントを追加する前に、次の行を呼び出す必要があります
pnlButton.setLayout(null);
上記は、絶対レイアウトを使用するようにコンテンツパネルを設定します。つまり、setBounds
メソッドを使用して、コンポーネントの境界を常に明示的に設定する必要があります。
一般に、絶対レイアウトの使用はお勧めしません。
ボタンで child.setLocation(0, 0)
、および parent.setLayout(null)
を使用します。 JFrameでsetBounds(...)を使用してサイズを変更する代わりに、 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);
最初に構文pnlButton.setLayout()
でレイアウトを設定し、次に希望する最適なレイアウトを選択する必要があります。例:pnlButton.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));
。そして、そのJButtonをJPanelに取り込みます。
どこかにconstを定義します:
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();
私はこれが助けて、私にとって素晴らしい仕事をすることを願っています...
笑ボタンの場合.setBounds(0、0、220、30).setBoundsレイアウトは次のようになります(int x、int y、int width、int height)
まず、JPanelサイズの高さとサイズの幅を覚えてから、JButton座標が(xo、yo、x length、y length)であることに注意してください。ウィンドウが800x600の場合、次のように書くだけです。
JButton.setBounds(0, 500, 100, 100);
ボタンを表すために座標のギャップを使用し、ウィンドウの終了位置とウィンドウの開始位置を知る必要があります。