フレーム/コンテナ全体を占めるように拡張するJButton
-
10-07-2019 - |
質問
皆さん、こんにちは。ボタンとラベルが付いたスイングGUIを作成しようとしています。ボーダーレイアウトとラベル(北フィールド内)を使用すると、うまく表示されますが、ボタンはフレームの残りの部分を占有します(中央フィールド内にあります)。これを修正する方法はありますか?
解決
ボタンを別のパネルに追加してから、そのパネルをフレームに追加する必要があります。
BorderLayoutは、コンポーネントが中央にあるものを展開します
コードは次のようになります。
前
public static void main( String [] args ) {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
JFrame frame = ...
frame.add( label, BorderLayout.NORTH );
frame.add( button , BorderLayout.CENTER );
....
}
次のように変更します:
public static void main( String [] args ) {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
JPanel panel = new JPanel();
panel.add( button );
JFrame frame = ...
frame.add( label, BorderLayout.NORTH );
frame.add( panel , BorderLayout.CENTER);
....
}
前/後
http://img372.imageshack.us/img372/2860/beforedl1.pngの前 http://img508.imageshack.us/img508/341/aftergq7.png
の後他のヒント
または単に絶対レイアウトを使用します。レイアウトパレットにあります。
または次で有効にします:
frame = new JFrame();
... //your code here
// to set absolute layout.
frame.getContentPane().setLayout(null);
これにより、好きな場所に自由にコントロールを配置できます。
再び:)
import javax.swing.*;
public class TestFrame extends JFrame {
public TestFrame() {
JLabel label = new JLabel("Some info");
JButton button = new JButton("Ok");
Box b = new Box(BoxLayout.Y_AXIS);
b.add(label);
b.add(button);
getContentPane().add(b);
}
public static void main(String[] args) {
JFrame f = new TestFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
所属していません StackOverflow