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就可以了