gpt4 book ai didi

java - 为什么在使用 LayoutManager 时这些小部件没有出现在我的框架中?

转载 作者:行者123 更新时间:2023-11-29 04:33:12 24 4
gpt4 key购买 nike

我想利用 JFrameContainer 的默认布局:LayoutManager,避免使用 专门化它>FlowLayout ¹.

所以我写了这段代码:

LayoutManager layout_manager = this.getContentPane().getLayout();
layout_manager.addLayoutComponent(null, text_field_add_items);

(注意:this 指向一个 JFrame 对象,而 text_field_add_items 是我指定的一个 TextField一个大小感谢 setSize)

但什么也没有出现。

¹ :我真的很想使用 LayoutManager,因为它允许我使用默认布局(FlowLayout)以外的其他布局,如果我需要的话将来。你知道为什么吗?


完整来源:

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);

}


}

最佳答案

JavaDoc对于FlowLayoutaddLayoutComponent的描述如下:

Adds the specified component to the layout. Not used by this class.

如果 LayoutManager 不同,您的代码可能会工作,但是对于 FlowLayout,什么也不会发生。

不幸的是,您确实需要根据您正在使用的特定 LayoutManager 编写代码;根据 LayoutManager,您可能想要使用 addaddLayoutComponent 或其他完全不同的东西。也就是说,将布局代码委托(delegate)给单独的方法或类可能是个好主意,这样可以轻松更改 LayoutManager 而不会破坏您的代码。

编辑: 正如 camickr 所指出的,默认的 LayoutManagerBorderLayout。有边框布局,使用addLayoutComponent时需要使用constraints;查看 JavaDoc .

关于java - 为什么在使用 LayoutManager 时这些小部件没有出现在我的框架中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com