Java Swing:相对定位和自动调整大小?
我有一个createUI()函数,它将JPanel加载到北、南、东Java Swing:相对定位和自动调整大小?,java,swing,Java,Swing,我有一个createUI()函数,它将JPanel加载到北、南、东 private void createUI() { add(createToolBar(), BorderLayout.NORTH); add(createDataView(), BorderLayout.SOUTH); add(createHistoryView(), BorderLayout.EAST); createMenuBar(); setTitle("My Applicat
private void createUI() {
add(createToolBar(), BorderLayout.NORTH);
add(createDataView(), BorderLayout.SOUTH);
add(createHistoryView(), BorderLayout.EAST);
createMenuBar();
setTitle("My Application");
}
每个组件都显示在正确的位置,但是,它们都是固定大小的JPanel。我想知道JPanel是否可以完全填充BorderLayout区域
例如,createDataView()是一个带有表的简单Jpanel。我希望它水平扩展,并有一个固定的高度
private JPanel createDataView(){
JPanel panel = new JPanel();
String data[][] = {{"001","vinod","Bihar","India","Biology","65","First"},
{"002","Raju","ABC","Kanada","Geography","58","second"},
{"003","Aman","Delhi","India","computer","98","Dictontion"},
{"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"},
{"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}};
String col[] = {"Roll","Name","State","country","Math","Marks","Grade"};
JTable table = new JTable(data,col);
table.setPreferredScrollableViewportSize(new Dimension(900,100));
JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
JScrollPane pane = new JScrollPane(table);
table.setAutoResizeMode(JTable.WIDTH);
table.doLayout();
panel.add(pane);
return panel;
}
现在我依靠手动设置尺寸。但是,我想知道一种获取当前窗口宽度的方法,并将其设置如下
table.setPreferredScrollableViewportSize(new Dimension(900,100));
新
JPanel
的默认布局为FlowLayout
;GridLayout
可能是数据视图的备选方案。您可以在中比较各种可能性
增编:你看起来很可疑JTable.WIDTH
不太可能恰好是一个有效值GridLayout
可以很好地使用默认的JTable。自动调整后续列的大小,但您可以尝试其他设置
table.setAutoResizeMode(JTable.WIDTH);
使用borderlayout时,北、南、东和西边界均采用包含面板的默认大小,但中心将扩展到“占据所有剩余空间”。我建议将您的createDataView放在布局的这一部分。您在南部的“单元格”中填充了两个内容“…它们之间的关系如何?您的意思是将一个JPanel容器放在中间,然后将组件放在这里吗?是的,更改add(createDataView(),BorderLayout.SOUTH);要添加(createDataView(),BorderLayout.CENTER);这似乎已经完全覆盖了中心的现有组件。不管怎样,要并排走吗?如果我需要一些在南部的东西呢,中心?哦,对不起,你没有提到你已经在中心有组件了。在这种情况下,您可能需要查看JTable上的minSize、preferredSize和maxSize方法。WIDTH
继承自ImageObserver
(由组件实现),它恰好与JTable#AUTO_RESIZE_NEXT_COLUMN
@Geoffrey Zheng:1!我应该看看。谢谢你澄清这一点。
table.setAutoResizeMode(JTable.WIDTH);