import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; /** * * @author Coffey * */ public class Chat extends JFrame implements ActionListener { Dimension faceSize; // 框架的大小 /* 容器及布局管理器对象 */ Container con; // 容器对象 GridBagLayout gbl; // 网格包布局管理器对象 /* 所使用的面板对象 */ JPanel leftPanel; // 左则的面板 JPanel topPanel; // 左上的面板 JPanel downPanel; // 左下的面板 JPanel rightPanel; // 右则的面板 /** * 构造函数 */ public Chat() { // 初始化函数 init(); // 设置框架的大小 this.setSize(faceSize); // 添加框架的关闭事件处理 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置运行时窗口的位置 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((int) (screenSize.width - faceSize.getWidth()) / 2, (int) (screenSize.height - faceSize.getHeight()) / 2); // 设置标题 this.setTitle(strFrameTitle); // 是否最大化 this.setResizable(true); // 是否可视化 this.setVisible(true); } /** * 设置左上面板网格包布局管理器 */ private GridBagConstraints getTopGridBagConstraints() { // 组件约束对象 GridBagConstraints gbc = new GridBagConstraints(); // 在水平方向和垂直方向上同时调整组件大小 gbc.fill = GridBagConstraints.BOTH; // 分布额外的水平空间 gbc.weightx = 3.0; // 分布额外的垂直空间 gbc.weighty = 3.0; // 显示区域的一行中的单元格数 gbc.gridwidth = GridBagConstraints.REMAINDER; // 显示区域的一列中的单元格数 gbc.gridheight = 1; // 返回约束对象 return gbc; } /** * 设置左下面板网格包布局管理器 */ private GridBagConstraints getDownGridBagConstraints() { // 组件约束对象 GridBagConstraints gbc = new GridBagConstraints(); // 在水平方向和垂直方向上同时调整组件大小 gbc.fill = GridBagConstraints.BOTH; // 分布额外的水平空间 gbc.weightx = 1.0; // 分布额外的垂直空间 gbc.weighty = 1.0; // 显示区域的一行中的单元格数 gbc.gridwidth = GridBagConstraints.REMAINDER; // 显示区域的一列中的单元格数 gbc.gridheight = 1; // 返回约束对象 return gbc; } /** * 获得指定的滚动条 * * @param cp * @return */ private JScrollPane getScrollPane(Component cp) { JScrollPane scrollPane = new JScrollPane(cp, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.revalidate(); return scrollPane; } /** * 程序初始化函数 */ public void init() { /* 设置框架的大小 */ faceSize = new Dimension(450, 550); /* 获得当前对象Pane */ con = this.getContentPane(); /* 初始化包布局管理器对象 */ gbl = new GridBagLayout(); /* 初始化面板对象 */ leftPanel = new JPanel(); topPanel = new JPanel(); downPanel = new JPanel(); rightPanel = new JPanel(); /* 设置面板布局管理器 */ leftPanel.setLayout(gbl); topPanel.setLayout(new BorderLayout()); topPanel.setBackground(Color.red); downPanel.setLayout(new BorderLayout()); downPanel.setBackground(Color.blue); rightPanel.setLayout(new BorderLayout()); gbl.setConstraints(topPanel, this.getTopGridBagConstraints()); // 设置网格包布局管理器 gbl.setConstraints(downPanel, this.getDownGridBagConstraints()); // 设置网格包布局管理器 /* 添加到主左面板 */ leftPanel.add(topPanel); leftPanel.add(downPanel); /* 添加到主右面板 */ rightPanel.add(new JButton("right"), "East"); /* 合并所有面板 */ con.add(leftPanel, "Center"); con.add(rightPanel, "East"); } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub } }