java 语言基础
GUI
按功能分:
容器类、辅助类和组件类
eg:
import javax.swing.*;
import java.awt.*;
public class e1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new JFrame();
frame.setSize(300,300);
frame.setTitle("框架");
frame.setLocation(100,100);
JButton button=new JButton("按钮"); //创建按钮
Container container=frame.getContentPane();
container.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
运行结果:
添加按钮的框架
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class e2 {
public static void main(String[] args) {
JFrame frame=new JFrame();
frame.setSize(300,300);
frame.setLocation(100,100);
frame.setTitle("框架");
JButton button1=new JButton("按钮1");
JButton button2=new JButton("按钮2");
Container container=frame.getContentPane();
container .setLayout (new FlowLayout()); //引入布局管理器类
container.add(button1);
container.add(button2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
运行结果:
- 框架
import javax.swing.JButton;
import javax.swing.JFrame;
//通过继承生成框架
public class e3 {
public static void main(String[] args) {
MyFrame frame=new MyFrame();
}
}
class MyFrame extends JFrame{
MyFrame(){
this.setSize(200,200);
this.getContentPane().add(new JButton("按钮"));
this.setTitle("我自己的框架");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
- 布局管理器
- 流水布局
构造方法:
FlowLayout(对齐方式,水平间距,垂直间距);
eg:
package MyGUI;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class liushiu {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame frame =new MyFrame();
}
}
class MyFrame extends JFrame{
JButton[] b=new JButton[10];
MyFrame() {
this.setSize(300,200);
Container container=this.getContentPane();
FlowLayout f=new FlowLayout(FlowLayout.CENTER,10,10); //定义流水布局管理器
container.setLayout(f);
for(int i=0;i<b.length;i++) {
b[i]=new JButton("按钮"+i);
container.add(b[i]);
}
this.setTitle("流水局管理器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
运行结果:
- 网格布局
构造方法:
GridLayout(行数,列数,水平间距,垂直间距);
import javax.swing.*;
import java.awt.*;
public class e4 {
public static void main(String[] args) {
MyFrameGrid frame =new MyFrameGrid();
}
}
class MyFrameGrid extends JFrame{
JButton []b=new JButton[10];
MyFrameGrid() {
this.setSize(400,200);
Container container=this.getContentPane();
GridLayout g=new GridLayout(3,4,10,10);
container.setLayout(g);
for(int i=0;i<b.length;i++) {
b[i]=new JButton("按钮"+i);
container.add(b[i]);
}
this.setTitle("网格布局管理器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
运行结果:
- 边界布局
构造方法:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
public class e5 extends JFrame{
public static void main(String[] args) {
MyFrameBoder frame=new MyFrameBoder();
}
}
class MyFrameBoder extends JFrame{
MyFrameBoder(){
this.setSize(300,200);
Container container=this.getContentPane();
BorderLayout b=new BorderLayout(10,10);
container.setLayout(b);
container.add(new JButton("东面"),BorderLayout.EAST);
container.add(new JButton("南面"),BorderLayout.SOUTH);
container.add(new JButton("西面"),BorderLayout.WEST);
container.add(new JButton("北面"),BorderLayout.NORTH);
container.add(new JButton("中间"),BorderLayout.CENTER);
this.setTitle("边界布局管理器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
- 面板
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class e6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFramePanel frame=new MyFramePanel();
}
}
class MyFramePanel extends JFrame{
JButton b1=new JButton("登入(L)");
JButton b2=new JButton("取消(C)");
JTextField t1=new JTextField(15);
JTextField t2=new JTextField(15);
JLabel l1=new JLabel("用户账户(A)");
JLabel l2=new JLabel("登入密码(P)");
JPanel p1=new JPanel(); //创建面板
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
MyFramePanel(){
this.setSize(300,200);
Container container=this.getContentPane();
FlowLayout fleft=new FlowLayout(FlowLayout.CENTER,10,10);
FlowLayout fright=new FlowLayout(FlowLayout.RIGHT,10,10);
BorderLayout border=new BorderLayout(10,10);
GridLayout g=new GridLayout(2,1);
container.setLayout(border);
p1.setLayout(fleft);
p2.setLayout(fleft);
p3.setLayout(fleft);
p4.setLayout(g);
p1.add(l1);
p1.add(t1);
p2.add(l2);
p2.add(t2);
p3.add(b1);
p3.add(b2);
p4.add(p1);
p4.add(p2);
container.add(p4,BorderLayout.CENTER);//把面板添加到内容窗格中
container.add(p3,BorderLayout.SOUTH);
this.setTitle("面板的应用");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
- 组件
//组件
package eg1;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class zujian {
public static void main(String[] args) {
MyFrame frame =new MyFrame();
}
}
class MyFrame extends JFrame{
JButton b1;
JButton b2;
MyFrame(){
this.setSize(400,100);
Container container=this.getContentPane();
FlowLayout f=new FlowLayout(FlowLayout.CENTER,10,10);
container.setLayout(f);
ImageIcon icon=new ImageIcon("icon\\icon.jpg"); //定义图片对象
b1=new JButton("添加图片的按钮",icon);
b2=new JButton("未添加图片的按钮",icon);
container.add(b1);
container.add(b2);
this.setTitle("按钮的应用");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
总结:
构造方法:
JLabel jl=new JLabel();
JLabel jl=new JLabel(图片对象);
JLabel jl=new JLabel(图片对象,对齐方式);
JLabel jl=new JLabel(标题);
JLabel il=new JLabel(标题,图片,对齐方式);
JTextField jf=new JTextField();
JTextField jf=new JTextField(列数);
JTextField jf=new JTextField(文本);
JTextField jf=new JTextField(文本,列数);
- 复选框和单选按钮
//单选按钮和复选框
package eg2;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.Border;
public class dxfx {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame frame=new MyFrame();
}
}
class MyFrame extends JFrame{
JRadioButton r1=new JRadioButton("男",false); //创建单选按钮
JRadioButton r2=new JRadioButton("女",true);
ButtonGroup bg=new ButtonGroup(); //创建按钮组
//创建复选框
JCheckBox c1=new JCheckBox("运动");
JCheckBox c2=new JCheckBox("看书");
JCheckBox c3=new JCheckBox("旅游");
Border e=BorderFactory.createEmptyBorder();
Border bo1=BorderFactory.createTitledBorder(e,"性别");
Border bo2=BorderFactory.createTitledBorder("兴趣爱好");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
public MyFrame(){
this.setSize(300,200);
this.setTitle("单选按钮和复选框");
Container c=this.getContentPane();
//创建布局管理器对象
GridLayout f=new GridLayout(2,10,10,10);
//设置内容窗格布局管理器
c.setLayout(f);
bg.add(r1);
bg.add(r2);
p1.setBorder(bo1);
p1.add(r1);
p1.add(r2);
p2.setBorder(bo2);
p2.add(c1);
p2.add(c2);
p2.add(c3);
c.add(p1);
c.add(p2);
this.setVisible(true);
this.setDefaultCloseOperation(3);
}
}
总结:
复选框的构造方法:
JCheckBox c=new JCheckBox();:创建一个没有文本的复选框
JCheckBox c=new JCheckBox(文本);:创建一个有文本的复选框
JCheckBox c=new JCheckBox(文本,是否选中);:创建一个有文本且确定起始选中状态的复选框
JCheckBox c=new JCheckBox(图片对象);:创建一个有图标的复选框
JCheckBox c=new JCheckBox(文本,图片对象);:创建一个有图标和文本且确定起始选中状态的复选框
JCheckBox c=new JCheckBox(文本,图片对象,是否选中);:创建一个有文本和图标且确定起始选中状态的复选框
单选按钮也很简单,但是注意如果要实现单选功能,就一定要将单选按钮编在一个组内,这样才能实现单选功能,否则它和复选框就一样了。
JRadioButton r=JRadioButton(文本);:创建一个有文本的单选按钮
JRadioButton r=JRadioButton(文本,是否选中);:创建一个有文本且确定起始选中状态的单选按钮
JRadioButton r=JRadioButton(图片对象);:创建一个有图标的单选按钮
JRadioButton r=JRadioButton(图片对象,是否选中);:创建一个有图标且确定起始状态的单选按钮
将单选按钮加在一个组里的方法和语句:
ButtonGroup bg=new ButtonGroup();
bg.add(r);