我有一个JTextField被添加到OverlayLayout,但JTextField自动缩放为整个面板的尺寸,我不想要。我也不想弄乱JTextField的尺寸,因为默认的高度恰好适合字体,宽度应该由构造函数中的列数来定义。什么才是解决这个问题的正确方法?将JTextField添加到OverlayLayout
下面是我现在使用的相关代码: frame = new JFrame(“frame”); frame.setResizable(false);
panel = new GamePanel();
panel.setPreferredSize(new Dimension(500,300));
panel.setLayout(new OverlayLayout(panel));
JTextField t = new JTextField(50);
panel.add(t);
frame.add(panel);
frame.pack();
frame.setVisible(true);
GamePanel只是JPanel的一个子类;它不会做任何会影响JTextField的事情。
编辑:好吧,我听说现在使用默认的摆动布局管理器不是最好的主意。 kleopatra链接了一个涉及三个第三方布局的页面,这些布局应该完成您需要做的几乎所有事情,但是我找不到任何能让我将文本字段(或其他组件)叠加到另一个自定义渲染的面板上的任何内容。什么是正确的方法?
请编辑您的问题以包含[*最小,完整,有效示例*](http://stackoverflow.com/help/mcve)目前的做法。 – trashgod
只需在你的GamePanel上使用FlowLayout。 – camickr
[不要使用setXXSize,永远](http://stackoverflow.com/a/7229519/203657) – kleopatra