一、JFrame
1、JFrame是一个顶层容器类(可以添加其他swing组件的类)
创建一个简单的JFrame窗口:
public class TestJFrame extends JFrame{
JButton jButton = null;
public static void main(String[] args) {
TestJFrame testJFrame = new TestJFrame();
}
public TestJFrame(){
JButton jButton = new JButton("按钮");//创建按钮
this.setTitle("第一个窗体");//设置标题
this.setSize(400, 200);//设置窗口大小
this.add(jButton);//添加按钮
this.setLocation(300, 200);//设置相对于window界面的位置
this.setResizable(false);//禁止修改大小
this.setIconImage((new ImageIcon("images/my.jpg")).getImage());//设置窗体图标
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口保证JVM也退出,避免无谓的内存消耗
this.setVisible(true);//显示
}
}
二、三大常用布局管理器介绍
1、流式布局管理器
public class TestFlowLayout extends JFrame{
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
TestFlowLayout testFlowLayout = new TestFlowLayout();
}
public TestFlowLayout(){
//创建组件
jb1 = new JButton("关羽");
jb2 = new JButton("张飞");
jb3 = new JButton("赵云");
jb4 = new JButton("黄忠");
jb5 = new JButton("魏延");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
//设置布局管理器
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//设置窗体属性
this.setTitle("边界布局案例");
this.setSize(300,200);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
2、边界布局管理器
public class TestBorderLayout extends JFrame{
//定义组件
JButton jbCenter,jbNorth,jbEast,jbSouth,jbWest;
public static void main(String[] args) {
TestBorderLayout testBorderLayout = new TestBorderLayout();
}
public TestBorderLayout(){
//创建组件
jbCenter = new JButton("中部");
jbEast = new JButton("东部");
jbSouth = new JButton("南部");
jbWest = new JButton("西部");
jbNorth = new JButton("北部");
//添加各个组件
this.add(jbCenter,BorderLayout.CENTER);
this.add(jbNorth,BorderLayout.NORTH);
this.add(jbEast,BorderLayout.EAST);
this.add(jbSouth,BorderLayout.SOUTH);
this.add(jbWest,BorderLayout.WEST);
//设置窗体属性
this.setTitle("边界布局案例");
this.setSize(300,200);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
3、网格布局管理器
public class TestGridLayout extends JFrame{
//定义组件
int size = 9;
JButton jbs[] = new JButton[size];
public static void main(String[] args) {
TestGridLayout testGridLayout =new TestGridLayout();
}
public TestGridLayout(){
//创建组件并添加组件
for(int i=0;i<size;i++){
jbs[i] = new JButton(String.valueOf(i));
this.add(jbs[i]);
}
//设置网格布局
this.setLayout(new GridLayout(3,3,10,10));
//设置窗体属性
this.setTitle("边界布局案例");
this.setSize(300,200);
this.setLocation(200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
4、其他还有卡片布局管理器和网格包布局管理器,但是不常用
三、其他一些工具
1、JPanel面板
//JPanel布局默认是FlowLayout,它也是一个容器类组件,可以使用面板作载体容纳其他的组件实现更多用化的布局
JPanel jp = new JPanel();
jp.setBackground(Color.RED);//设置面板背景色
或 :jp.setBackground(new Color(0,0,255));//同样也是设置背景色
2、JCheckBox多选框
JCheckBox jcb1 = new JCheckBox("足球");
3、JRadioButton单选框
//一定要把jrb1和jrb2放入到ButtonGroup中,要不然就实现不了单选的效果
//但要注意,虽然单选框放在ButtonGroup中,但是放到其他容器时仍然使用的是单选框而不是ButtonGroup
ButtonGroup bGroup = new ButtonGroup();
JRadioButton jrb1 = new JRadioButton("男");
JRadioButton jrb2 = new JRadioButton("女");
bGroup.add(jrb1);
bGroup.add(jrb2);
4、JComboBox下拉框
String [] jg = {"北京","上海","广州","玉林"};
JComboBox jcb1 = new JComboBox(jg);
5、JList列表及JScrollPane滚动条
String [] dd = {"桂林","九寨沟","故宫","长城"};
JList jList = new JList(dd);
jList.setVisibleRowCount(3);//设置你希望显示多少个选项
JScrollPane jScrollPane = new JScrollPane(jList);//注意:而后在之后放到其他容器中使用的时候要用的是jScrollPane
6、JSplitPane 拆分窗格及ImageIcont图片
String [] dd = {"桂林","九寨沟","故宫","长城"};
JList jList = new JList(dd);
JLable jl1 = new JLable(new ImageIcon("images/桂林.jpg"));
JSplitPane jsp = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT,jList,jl1);
jsp.setOneTouchExpandable(true);//设置可以展开收起
7、JTextArea多行文本框
JTextArea jta = new JTextArea();
8、JTabbedPane选项卡窗格
JTabbedPane jtp = new JTabbedPane();
9、JLabel标签
JLable jl1 = new JLable("姓名",JLabel.CENTER);//设置文本居中
jl1.setFont(new Font("宋体",Font.PLAIN,16));//设置字体样式
jl1.setForeground(Color.BLUE);//设置字体颜色方法
JLabel jl2 = new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");//超链接
jl2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标到该标签变成一个小手
10、JButton按钮
JButton jb = new JButton(new ImageIcon("youdao.gif"));//按钮可以使用动态图片
11、JMenuBar菜单条组件(树干)、JMenu菜单组件(树枝)、JMenuItem菜单项组件(树叶)
Jmenu jmenu = new Jmenu("文件(F));
jmenu.setMnemonic("F");//设置助记符,这里填F可以使用alt+F建打开改菜单页
jmenu.addSeparator();//添加分割线
JMenuItem jMenuItem = new JMenuItem("保存");
jMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));//添加保存快捷方式
注意:全部做好菜单之后一定要记得将菜单条添加到窗体中
this.setJMenuBar(jmb);
12、JToolBar工具条组件
JButton jb = new JButton(new ImageIcon("new.jpg"));
jb.setToolTipText("新建");//设置鼠标停在按钮上时的提示消息
工具条添加到窗体直接使用add就可以了