java OO 图形界面总结

JFrame 窗口

content 内容

panel 面板

Button 按钮

JTextField 文本框

JPasswordField 密码框

JFrame在swingbao

JFrame jframe = new JFrame();

iframe.setVisible(true); //设置窗口显示

jframe.setLocation(300, 300);//设置窗口位置

jframe.setSize(400,400);//设置窗口大小

//按钮,控件
/*JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("取消");
JButton btn3 = new JButton("删除");
jframe.add(btn1);
jframe.add(btn2);
jframe.add(btn3);*/

//JFtame默认布局管理器 BorderLayout (东南西北中布局)

/*jframe.setLayout(null);//完全自定义布局 需要为每个控件设置大小位置
//位置
jframe.add(btn1,BorderLayout.WEST);
jframe.add(btn2,BorderLayout.EAST);
jframe.add(btn3, BorderLayout.CENTER);

btn1.setLocation(40, 40); //位置
btn1.setSize(100, 25); //大小
btn2.setLocation(40, 70);
btn2.setSize(100, 25);
btn3.setLocation(40, 100);
btn3.setSize(100, 25);*/

//流式布局 FlowLayout
//只会根据窗口大小进行布局,控件大小根据内容大小定大小
/*jframe.setLayout(new FlowLayout());
JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("取消");
JButton btn3 = new JButton("删除");
JButton btn4 = new JButton("确定1");
JButton btn5 = new JButton("取消2");
JButton btn6 = new JButton("删除3");
jframe.add(btn1);
jframe.add(btn2);
jframe.add(btn3);
jframe.add(btn4);
jframe.add(btn5);
jframe.add(btn6);*/

//网格布局,也叫表格布局
//前两个参数表示几行几列,注意:必须先满足行,才满足列; 后面两个参数表示间隔.
jframe.setLayout(new GridLayout(2,3,5,5));
JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("取消");
JButton btn3 = new JButton("删除");
JButton btn4 = new JButton("确定1");
JButton btn5 = new JButton("取消2");
JButton btn6 = new JButton("删除3");
jframe.add(btn1);
jframe.add(btn2);
jframe.add(btn3);
jframe.add(btn4);
jframe.add(btn5);
jframe.add(btn6);
jframe.setDefaultCloseOperation(JFrame.EXOE_ON_CLOSE);
//默认是点右上角X时,隐藏
//设置为JFrame.EXIT_ON_CLSE时,点击右上角才是关闭

布局容器

JPanel ,默认的布局管理器FlowLayout

JPanel p1 = new JPanel();

文字显示的控件

JTabel lblName = new JTabel("账号:");

输入框

JTextField txtName = new JTextField(宽度);

密码框

JPasswordField txtPaw = new JPasswordField(宽度);

将控件加入JPanel容器中

p1.add(lblName);

btu.addActionListener(new ActionListener(){});   // 按钮作用实现

信息弹出窗口

JOptionPane.showMessageDialog(null,"登陆成功");

在跳到新窗口时,隐藏原来的窗口

LoginFrame.this.dispose(); 注意这个实在匿名类中使用.必须要使用类名.this.dispose();

设置不能改变窗口大小

this.setResizable(false);

打包,就是让窗口里面的控件更加的紧凑

pack();

    //账户
private JTextField txtName;
//密码
private JPasswordField txtPwd;

public LoginFrame(){
this.setTitle("登录窗口");
//位置
this.setLocation(400, 300);
//大小
this.setSize(400, 400);

this.setLayout(new GridLayout(3,1,5,10));
JPanel p1 = new JPanel();

JLabel lblName = new JLabel("账号:");
txtName = new JTextField(20);
txtName.setText("admin");
p1.add(lblName);
p1.add(txtName);


JPanel p2 = new JPanel();
//文字显示控件
JLabel lblpwd = new JLabel("密码:");
//输入框控件
this.txtPwd = new JPasswordField(20);
//将控件加入panel容器中
p2.add(lblpwd);
p2.add(txtPwd);

JPanel p3 = new JPanel();
JButton btn1 = new JButton("登录");
JButton btn2 = new JButton("注册");
p3.add(btn1);
p3.add(btn2);
//ActionListener接口,用于关联按钮作用
btn1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
//获取文本框的内容
String name = txtName.getText();
//获取密码框的内容,密码是字符数组
String pwd = new String(txtPwd.getPassword());
if(name.equalsIgnoreCase("admin") &&
pwd.equalsIgnoreCase("admin")){

//弹出提示框
//第一个参数:null表示在屏幕中间显示
//第二个参数:表示显示的信息
//String name1 = JOptionPane.showInputDialog("请输入账号:");
JOptionPane.showMessageDialog(null, "登陆成功!");
//在跳到新窗口时,隐藏原来的窗口
LoginFrame.this.dispose();
                     //new的新窗口(传当前窗口过去)
new MyFrame(LoginFrame.this);

}else{
JOptionPane.showMessageDialog(null, "登陆失败!");

}
}

});
//把控件加入窗口中
this.add(p1);
this.add(p2);
this.add(p3);

//关闭窗口 关闭整个程序
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不能改变窗口大小
this.setResizable(false);
//打包,就是让窗口里面的控件更加的紧凑
pack();
//设置窗口显示
this.setVisible(true);
}

下拉菜单

JComboBox<E>

        JComboBox<String> combox = new JComboBox<String>();
combox.addItem("本科");
combox.addItem("专科");
combox.addItem("高中");
JButton btn2 = new JButton("选择");

btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获取下拉列表的选择内容
String str = (String) combox.getSelectedItem();
System.out.println(str);
}
});

ActionListener 是一个通用事件,每一个控件都有这么一个事件,但是一些特殊的控件,有自己独自的事件方法

单选按钮

JRadiobutton

单选按钮组

ButtonGronp

需要把单选按钮放入单选按钮组中,才能实现单选功能

        //单选按钮类,定义单选按钮
JRadioButton jr1 = new JRadioButton("男");
JRadioButton jr2 = new JRadioButton("女");
//单选按钮组
ButtonGroup bg = new ButtonGroup();
//把单选按钮给进单选按钮组
bg.add(jr1);
bg.add(jr2);
//
JPanel panel3 = new JPanel();
panel3.add(jr1);
panel3.add(jr2);
//BorderLayout.CENTER表示居中显示
this.add(panel3,BorderLayout.CENTER);

JDK1.8在局部内部类和匿名内部类中,默认使用的布局变量全部是final修饰的常量

在JDK1.8之前,必须手动声明 final String key.....这个变量才能在局部内部类和匿名内部类中使用

不然会直接报错

ActionListener是一个通用事件,每一个控件都有这么一个事件

但是一些特殊的控件,有自己独立的事件方法

ombo使用ActionListener的缺陷是,如果当前选中的条目,再次被选择,还是会触发事件

itemStateChanged如果下拉菜单条目改变

其实会触发两次这个方法,一次是原来的条目不选择,新的条目被选择

所以,一般需要进行判断,只是在被选择的时候进行操作

滚动条:JScrollPane pane = new JScrollPane(内容);

设置默认的可见高度...也就是可见行数,注意,要联合滚动条一起使用  jlist.setVisibleRowCount(3);

设置宽度 jlist.setFixedCellWidth(150);

设置每一行的高度  jlist.setFixedCellHeight(50);

设置单选还是多选  jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

猜你喜欢

转载自www.cnblogs.com/ArrayStoreException/p/12050281.html