|----------------------------|
| Panel1 |
|----------------------------|
| | |
| | |
| | |
| Panel2 | Panel3 |
| | |
| | |
| | |
| | |
|--------|-------------------|
| Panel4 |
|----------------------------|各位智者大侠们,小弟刚入门学习java,我想设计上图这样的一个界面,用javax.swing包,Panel2和Panel3之间要用JSplitPane分割,并且要求Panel1的大小为(300,50),Panel2的大小为(100,200),Panel3的大小为(200,200),Panel4的大小为(300,50)。
请问我该采用什么什么布局?
最初我使用BorderLayout,好像无法解决精确设置EAST,SOUTH,NORTH长宽的问题。
后来试着用FlowLayout,因刚入门,也无法解决,请各位大侠赐教,最好贴出代码!谢谢了,小弟50分奉上!
| Panel1 |
|----------------------------|
| | |
| | |
| | |
| Panel2 | Panel3 |
| | |
| | |
| | |
| | |
|--------|-------------------|
| Panel4 |
|----------------------------|各位智者大侠们,小弟刚入门学习java,我想设计上图这样的一个界面,用javax.swing包,Panel2和Panel3之间要用JSplitPane分割,并且要求Panel1的大小为(300,50),Panel2的大小为(100,200),Panel3的大小为(200,200),Panel4的大小为(300,50)。
请问我该采用什么什么布局?
最初我使用BorderLayout,好像无法解决精确设置EAST,SOUTH,NORTH长宽的问题。
后来试着用FlowLayout,因刚入门,也无法解决,请各位大侠赐教,最好贴出代码!谢谢了,小弟50分奉上!
splitPane.setDividerLocation(100);
panel3.setPreferredSize(new Dimension(300,50));
再加上
JSplitPane jspHor;
jspHor=new JSplitPane(JSplitPane.VERTICAL_SPLIT,panel2,panel3);
这样还是实现不了上面的界面阿
import java.awt.event.*;
import javax.swing.*;
public class JFrameLayout extends JFrame{ private Container cp;
private JPanel p1,p2,p3,p4;
public JFrameLayout()
{
cp=this.getContentPane();
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
cp.setLayout(null);//精确布局
p1.setSize(300, 50);
p1.setLocation(0, 0);
p1.setBackground(Color.blue);
p2.setSize(100, 200);
p2.setLocation(0, 50);
p2.setBackground(Color.green);
p3.setSize(200, 200);
p3.setLocation(100, 50);
p3.setBackground(Color.red);
p4.setSize(300, 50);
p4.setLocation(0, 250);
p4.setBackground(Color.cyan);
cp.add(p1);
cp.add(p2);
cp.add(p3);
cp.add(p4);
this.setTitle("JFrame布局");
this.setSize(300, 335);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new JFrameLayout();
}}
JSplitPane.setDividerLocation(100);不过还得设置JFrame.setSize(300,300);不然界面会被拉伸的。想问一下,panel2、panel3是指初始化大小,还是说就是不能变化了?
panel2和panle3是初始化时的大小,panel2和panel3之间需要有JSplitPane分割的
能帮忙解决以下么?
今晚结贴,再次谢谢各位的帮助!
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;public class JFrameLayout extends JFrame { private JPanel p1, p2, p3, p4; public JFrameLayout() { p1 = new JPanel();
p2 = new JPanel();
p3 = new JPanel();
p4 = new JPanel(); p1.setPreferredSize(new Dimension(300, 50)); JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, p2, p3);
jsp.setDividerLocation(100); p4.setPreferredSize(new Dimension(300, 50)); getContentPane().add(p1, BorderLayout.NORTH);
getContentPane().add(jsp);
getContentPane().add(p4, BorderLayout.SOUTH); this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} public static void main(String[] args) {
new JFrameLayout();
}
}真晕,都说得够明白的了
如果不要拉动的话,
加一句话也行 jsp.setEnabled(false);