30/09/2018, 17:39

Giao diện Swing trong java, tại sao button lại chiếm hết màn hình?

Đây là code của mình: Mình mới chỉ code giao diện thôi nhé. ace xem giúp m cái button client (la button add sau cùng) lại chiếm hết màn hình.

public class MainWindow extends JFrame implements ActionListener {

JButton bt_client = new JButton();
JButton bt_server = new JButton();
JLabel jl = new JLabel();

public MainWindow() {

	// bt_server.setBackground(Color.CYAN);
	bt_server.setOpaque(true);
	bt_server.setBounds(new Rectangle(50, 50, 100, 50));
	bt_server.setText(" Server ");
	this.getContentPane().add(bt_server);
	bt_server.addActionListener(this);

	jl.setOpaque(true);
	jl.setBounds(new Rectangle(160, 50, 100, 50));
	jl.setToolTipText(" <=========> ");
	this.getContentPane().add(jl);

	bt_client.setOpaque(true);
	bt_client.setBounds(new Rectangle(270, 50, 100, 50));
	bt_client.setText("Client");
	this.getContentPane().add(bt_client);
	bt_client.addActionListener(this);

}

public static void main(String[] args) {
	SwingUtilities.invokeLater(new Runnable() {

		@Override
		public void run() {
			MainWindow m = new MainWindow();
			m.setSize(400, 300);
			// m.pack();
			m.setLocationRelativeTo(null);
			// m.setVisible(true);
			m.show();

		}
	});
}
TTmagic viết 19:40 ngày 30/09/2018

ace xem giúp m cái button client (la button add sau cùng) lại chiếm hết màn hình.

là sao nhỉ? nó có chiếm hết màn hình đâu?

Chi Ngo viết 19:40 ngày 30/09/2018

Bạn phải chọn layout cho JFrame chứ. Layout mặc định của JFrame là BorderLayout, nó chia thành 5 vùng là Đông, Tây, Nam, Bắc và Center. Khi bạn thêm bất kỳ component nào thì nó sẽ hiểu là thêm vào vùng Center cho nên cái cuối cùng sẽ chiếm toàn bộ cửa sổ.
Mình hay dùng GridBagLayout vì cái này dễ điều chỉnh các thành phần bên trong JFrame nhất (theo mình là thế). Bạn có thể đọc hướng dẫn tại đây.

Lê Trường viết 19:55 ngày 30/09/2018

thank b nhiều m quen xái null lay out rồi nên hay setBound

Bài liên quan
0