私は、に特化することを避けてLayoutManager
ののContainer
のデフォルトのレイアウトを利用したいと思っています。LayoutManagerを使用しているときに、これらのウィジェットがフレームに表示されないのはなぜですか?
だから私はこのコードを書いた:
LayoutManager layout_manager = this.getContentPane().getLayout();
layout_manager.addLayoutComponent(null, text_field_add_items);
(NB:this
JFrame
オブジェクトを指し、text_field_add_items
私はサイズにsetSize
のおかげで、指定されたためTextField
です)
をしかし、何も表示されません。
¹:私が実際にLayoutManager
を使用したいのは、デフォルトのもの(FlowLayout
)よりも別のレイアウトを使うことができるからです。 あなたはその理由を知っていますか?
全体源:FlowLayout
ためJavaDocにおいて
package tp4.bundle_clients;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.LayoutManager;
import javax.swing.WindowConstants;
public class Gui extends JFrame {
public Gui() {
this.setTitle("Client's graphical interface");
this.setSize(500, 250);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.addWidgets();
this.setVisible(true);
}
private void addWidgets() {
JTextField text_field_add_items = new JTextField();
text_field_add_items.setSize(100, 100);
JButton button_add_items = new JButton("Add items");
button_add_items.setSize(100, 100);
JTextField text_field_remove_items = new JTextField();
JButton button_remove_items = new JButton("Remove items");
JButton button_display_storage = new JButton("Display storage");
LayoutManager layout_manager = this.getContentPane().getLayout();
layout_manager.addLayoutComponent(null, text_field_add_items);
layout_manager.addLayoutComponent(null, button_add_items);
}
}
はあなたがそれを行うする全体の方法を投稿することができます呼び出す変更します'JFrame'の作成を含む? – ostrichofevil
私の投稿を編集しました! –
さて、あなたのレイアウトは実際には 'BorderLayout'です。これはデフォルトです。それがうまくいかない理由について私の答えに編集を参照してください。 – ostrichofevil