目录
二、基本布局
一、基本容器
1.1 JFrame
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
/**
* java.awt.Container类是javax.swing.JComponent的父类
* 对于容器,如果继承了了JFrame,则此类可以直接调用getContentPane()获取一个容器Container container =getContentPane();
* 也可以先定义一个JFrame对象jf,然后用jf调用getContentPane()获取一个容器Container container = jf.getContentPane();
*
* 设置容器,需要针对JFrame对象jf设置。jf.set();
* 添加部件,需要针对Container对象container设置。container.add(JComponent);
*
* JFrame的构造方法:
* public JFrame()
* public JFrame(String title)
*/
public class JFrameExp1 extends JFrame{
public void createFirstJFrame(String title) {
JFrame jFrame = new JFrame(title);
Container container = jFrame.getContentPane();//获取一个容器
JLabel jl = new JLabel("这是一个JFrame窗体");
// 使标签上的文字居中
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
container.setBackground(Color.blue);
jFrame.setVisible(true);
jFrame.setSize(200,150);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// jFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// jFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
}
public static void main(String[] args) {
(new JFrameExp1()).createFirstJFrame("test JFrame");
}
}
1.2 JDialog
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
/**
* JDialog来作为容器,一般情况下其需要基于父容器中生成
* public JDialog()
* public JDialog(Frame f)
* public JDialog(Frame f,boolean model)
* public JDialog(Frame f,String title)
* public JDialog(Frame f,String title,boolean model)
* JFrame是Frame的子类
*
* JDialog只支持:HIDE_ON_CLOSE\DISPOSE_ON_CLOSE\DO_NOTHING_ON_CLOSE
*
*/
public class JDialogwithJFrame extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public JDialogwithJFrame() {
JFrame jFrame= new JFrame("JFrame contains JDialog");
Container container = jFrame.getContentPane();
JLabel jLabel = new JLabel("这是一个JFrame");
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jLabel);
JButton jb = new JButton("弹出对话框");
jb.setBounds(10,10,100,21);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
(new MyJDialog(JDialogwithJFrame.this)).setVisible(true);
}
});
container.add(jb);
jFrame.setBackground(Color.cyan);
jFrame.setVisible(true);
jFrame.setSize(200,150);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class MyJDialog extends JDialog{
public MyJDialog(Frame frame) {
super(frame,"myfirst JDialog",true);
Container container = getContentPane();
JLabel jl = new JLabel("这是一个JDialog");
container.add(jl);
// this.setVisible(true);
this.setBounds(120,120,100,100);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
public static void main(String[] args) {
new JDialogwithJFrame();
}
}
二、基本布局
2.1 AbsoluteLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
* Container.setLayout(null);取消布局管理器
* Component.setBounds();设置每个组件的大小与位置
*/
public class AbsoluteLayout extends JFrame{
public AbsoluteLayout() {
setTitle("本窗体使用绝对布局");
setBounds(100, 100, 500, 500);
setLayout(null);
Container container = getContentPane();
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
jb1.setBounds(110, 110, 100, 20);
jb2.setBounds(110, 140, 100, 20);
container.add(jb1);
container.add(jb2);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new AbsoluteLayout();
}
}
2.2 BorderLayout
package com.zyx.mySwing.myLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
/**
* 边界布局管理器
* Swing的默认布局管理器是边界布局管理器BorderLayout
* 组件置于四个位置:
* BorderLayout.NORTH
* BorderLayout.SOUTH
* BorderLayout.EAST
* BorderLayout.WEST
* BorderLayout.CENTER
*
*/
public class BorderLayoutTest extends JFrame{
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
public BorderLayoutTest() {
setTitle("这个窗体使用边界布局管理器");
Container container =getContentPane();
setLayout(new BorderLayout());
for(int i=0;i<border.length;i++) {
container.add(border[i],new Button(buttonName[i]));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new BorderLayoutTest();
}
}
2.3 FlowLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import jav