Java swing的布局方法有 网格布局,网格麻袋布局,流式布局,空布局等。
但最主要使用的肯定还是前两种布局方式,因为他们能够达到一定的响应式的效果。
网格布局的缺点是太死板,他的确可以工整的按顺序布局整个页面的元件,可是,太工整的代价的就是每一个网格的宽和长是不可以调整的。而网格麻袋布局的好处就是,我可以把整个页面分成你所规定的行数和列数,你还可以规定他们的宽和长。这样效果会更美观。
下面是我的测试代码,注意AddChart_Tabbed tab2函数是我没有导入的一个单独的函数,它的作用就是往里面添加了一个jfreechart图表,这里你可以自己替换一下。下方类似的还有一个addAction函数,也是一个外部自定义函数,它的作用就是添加相应事件,所以截取的时候注意要去掉这些不识别的部分。
整个网格麻袋布局的使用方法如下:
//总体监控曲线部分
JPanel panel = new JPanel();
panel.setBackground(Color.white);
panel.setBounds(0, 0, 1366, 700);
int wid=panel.getWidth();
int hei=panel.getHeight();
int wi=wid/20;
int hi=hei/15;
GridBagLayout gridBagLayout=new GridBagLayout();
gridBagLayout.columnWidths = new int[]{wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi};
gridBagLayout.rowHeights = new int[]{hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi};
tabWindow.addComponentListener(new ComponentAdapter() {
@Override public void componentResized(ComponentEvent e){
int wid=tabWindow.getWidth();
int hei=tabWindow.getHeight();
int wi=wid/20;
int hi=hei/15;
gridBagLayout.columnWidths = new int[]{wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi,wi};
gridBagLayout.rowHeights = new int[]{hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi,hi};
}
});
panel.setLayout(gridBagLayout);
GridBagConstraints gridBagConstraints=new GridBagConstraints();
gridBagConstraints.fill=GridBagConstraints.BOTH;
AddChart_Tabbed tab2 = new AddChart_Tabbed();
AddChart_Tabbed tab3 = new AddChart_Tabbed();
AddChart_Tabbed tab4 = new AddChart_Tabbed();
AddChart_Tabbed tab5 = new AddChart_Tabbed();
AddChart_Tabbed tab6 = new AddChart_Tabbed();
ChartPanel cp2 = tab2.createPane();
ChartPanel cp3 = tab3.createPane();
ChartPanel cp4 = tab4.createPane();
ChartPanel cp5 = tab5.createPane();
ChartPanel cp6 = tab6.createPane();
JLabel a=new JLabel("sanidansi",JLabel.CENTER);
JButton b=new JButton("哈哈");
cp2.setSize(500, 600);
cp3.setSize(500, 600);
cp4.setSize(500, 600);
cp5.setSize(500, 600);
cp6.setSize(500, 600);
b.setSize(500, 600);
a.setSize(500, 100);
Font fnt = new Font("Serief",Font.BOLD, 20);
a.setFont(fnt);
gridBagConstraints.gridx=1;
gridBagConstraints.gridy=0;
gridBagConstraints.gridwidth=5;
gridBagConstraints.gridheight=1;
gridBagLayout.setConstraints(a, gridBagConstraints);
gridBagConstraints.gridx=1;
gridBagConstraints.gridy=1;
gridBagConstraints.gridwidth=5;
gridBagConstraints.gridheight=4;
gridBagLayout.setConstraints(b, gridBagConstraints);
gridBagConstraints.gridx=7;
gridBagConstraints.gridy=0;
gridBagConstraints.gridwidth=6;
gridBagConstraints.gridheight=6;
gridBagLayout.setConstraints(cp2, gridBagConstraints);
gridBagConstraints.gridx=13;
gridBagConstraints.gridy=0;
gridBagConstraints.gridwidth=6;
gridBagConstraints.gridheight=6;
gridBagLayout.setConstraints(cp3, gridBagConstraints);
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=8;
gridBagConstraints.gridwidth=6;
gridBagConstraints.gridheight=6;
gridBagLayout.setConstraints(cp4, gridBagConstraints);
gridBagConstraints.gridx=7;
gridBagConstraints.gridy=8;
gridBagConstraints.gridwidth=6;
gridBagConstraints.gridheight=6;
gridBagLayout.setConstraints(cp5, gridBagConstraints);
gridBagConstraints.gridx=13;
gridBagConstraints.gridy=8;
gridBagConstraints.gridwidth=6;
gridBagConstraints.gridheight=6;
gridBagLayout.setConstraints(cp6, gridBagConstraints);
addAction(cp2,tab2);
addAction(cp3,tab3);
addAction(cp4,tab4);
addAction(cp5,tab5);
addAction(cp6,tab6);
panel.add(a);
panel.add(b);
panel.add(cp2);
panel.add(cp3);
panel.add(cp4);
panel.add(cp5);
panel.add(cp6);