6 回答

TA贡献1785条经验 获得超8个赞
我记得,null布局意味着一个绝对的位置,所以你很难计算你的JTable左上角位置的X点。但是,如果您只想逐个使用所有面板组件,可以使用FlowLayout()管理器作为
JPanel panel=new JPanel(new FlowLayout());
panel.add(new aComponent());
panel.add(new bComponent());
panel.add(new JTable());
或者如果你需要填充面板,你应该使用GridLayout()作为......
int x=2,y=2;
JPanel panel=new JPanel(new GridLayout(y,x));
panel.add(new aComponent());
panel.add(new bComponent());
panel.add(new JTable());
祝好运

TA贡献1784条经验 获得超9个赞
如果使用null布局管理器,则始终需要设置组件的边界。这就是你的问题。
您应该按照每个人的建议去做,然后使用一些布局经理相信他们可以节省时间。去查看@jzd帖子中的教程。
享受,博罗。

TA贡献1784条经验 获得超2个赞
JTable
应该添加到JScrollPane
实际应该添加到的内容中JPanel
。
本JPanel
应该有一些布局管理器。
如果您不关心组件尺寸的精度,您可以使用纯净BorderLayout
并将其与FlowLayout
和组合GridLayout
。如果你需要精确 - 使用jgoodies FormLayout
。
这FormLayout
是非常棘手的,但你可以玩一点WindowBuilder
(嵌入到Eclipse中)并查看它生成的代码。它可能看起来很复杂,但这只是一种无知。
祝好运。

TA贡献1779条经验 获得超6个赞
首先,您应该认真考虑其他布局管理器,例如BorderLayoutManager(新的JPanel(新的BorderLayout()))是一个好的开始。
在设计对话框时,请记住您可以并且应该嵌套布局:一个JPanel在另一个JPanel中(例如BorderLayout中的GridLayout)。请注意:“ 正确 ”对话框应正确调整大小,以便在用户调整框架大小时,您希望自动扩展信息对象(如表格),而不显示大面积的JPanel背景。这是NullLayout无法实现的。
但是有可能出现这种情况 - 在这个大世界的某个地方 - NullLayout就是这样。所以这是一个例子:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JTableInNullLayout
{
public static void main(String[] argv) throws Exception {
DefaultTableModel model = new DefaultTableModel(
new String[][] { { "a", "123"} , {"b", "456"} },
new String[] { "name", "value" } );
JTable t = new JTable(model);
JPanel panel = new JPanel(null);
JScrollPane scroll = new JScrollPane(t);
scroll.setBounds( 0, 20, 150, 100 ); // x, y, width, height
panel.add(scroll);
JFrame frame = new JFrame();
frame.add(panel);
frame.setPreferredSize( new Dimension(200,200));
frame.pack();
frame.setVisible(true);
}
}
添加回答
举报