JavaGUI+内部类

GUI

图形用户界面,也可称为Swing

常用容器:

JFrame:

窗口,不能添加组件,在Swing中程序中创建

两种创建窗口的方式
方式1:直接创建JFrame对象
public class FrameDemo {


    public static void main(String[] args) {

        JFrame jFrame = new JFrame();
        //因为创建的窗口默认不可见,所以要通过setVisible()设置窗口可见
        jFrame.setVisible(true);//设置窗口可见
    }
}
方式2:创建一个类继承JFrame,在该类的构造方法中对窗口进行设置,然后在main方法中直接创建该类的对象即可
public class LoginFrameDemo extends JFrame {
    public LoginFrameDemo() throws HeadlessException {

        this.setSize(500, 500);//设置窗口大小
        this.setTitle("欢迎登录");//设置窗口名称
        //this.setLocation(500, 200);//设置初始窗口位置
        this.setLocationRelativeTo(null);//设置窗口在屏幕中居中

        this.setResizable(false);//设置窗口大小不可更改
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口操作


        this.setVisible(true);//设置窗口可见,放在最后
    }

    public static void main(String[] args) {

        LoginFrameDemo loginFrameDemo = new LoginFrameDemo();
    }
}
常用方法:

void setSize(int width, int height)//设置窗口大小

void setVisible(boolean b)//设置窗口可见,放在最后

void setTitle(String title)//设置窗口名称

void setResizable(boolean resizable)//设置窗口大小不可更改

void setLocation(int x,int y)//设置初始窗口位置

void setLocationRelativeTo(null);//设置窗口在屏幕中居中

void setDefaultCloseOperation(int operation)//设置关闭窗口操作

JPanel:

面板,一般添加到窗口中,用来添加组件

构造方法:

new JPanel();//默认布局是流式布局

new JPanel(new BorderLayout());//创建面板并设置布局为边界布局

常用方法:

void setBackground(Color bg)//设置面板背景颜色

void setLayout(LayoutManager mgr)//设置面板布局,也可在构造方法中设置

面板布局有三种:

1、流式布局,也是默认布局 。流式布局把面板分成一行一行的,在每一行就可以摆放组件,设置摆放的位置(对齐方式)

2、边界布局,把一个面板分为五个区域,东、西、南、北、中。中间是必须的,其他的4个区域可选,每个区域中可以添加其他的组件(面板,组件在此区域内会最大化)

3、网格布局,可以设置面板分为n行n列,可以从第一行第一列开始向表格中添加组件

常用组件:

JLabel标签组件:

容纳文字和图像内容,为别的组件进行标识

构造方法:

new JLabel();//创建标签组件

new JLabel(“账号”);//创建标签组件并设置标签上的内容

常用方法:

void setText(String text) //设置标签上的内容

String getText() //获得标签上的内容

setFont(new Font(“宋体”,Font.BOLD, 18))//设置字体格式

JTextField单行文本框组件:
构造方法:

new JTextField(15);//创建单行文本框组件,并设置列宽

new JTextField(“aaa”,15);//创建单行文本框组件,并设置初值,设置列宽

常用方法:

void setText(String text) //设置文本框中的内容

String getText() //获得文本框中的内容

void setEditable(boolean b) //设置文本框是否可以编辑

setColumns(20);// 设置列宽

JPasswordField密码框组件:

与单行文本框相似,但是输入内容不可见

构造方法:

new JPasswordField(15);//创建密码框组件,并设置列宽

new JPasswordField(“123”,15);//创建密码框组件,并设置初值,设置列宽

常用方法:

char[] getPassword()//获取密码框内容

JTextArea多行文本框组件:
构造方法:

new JTextArea(5,20);//创建多行文本框,并设置行、列

常用方法:

setLineWrap(true);//设置自动换行

append();//添加内容到末尾

注意:创建多行文本框后,还需要创建滚动面板(new JScrollPane();),因为要是输入的内容超过指定行数,文本框会自动增加行数,会损坏设定好的布局,因此闯将滚动面板来确保布局不会被改变。
JButton按钮组件:
构造方法:

new JButton(“登录”);创建一个带文本的按钮

常用方法:

jButton.setSize(100, 50);//设置按钮大小

jButton.setBackground(Color.PINK);//设置按钮背景颜色

jButton.setEnabled(false);//设置按钮不可用

jButton.setToolTipText(“点击登录”);//设置鼠标悬浮提示信息

菜单相关组件
JMenuBar菜单栏组件:
构造方法:

new JMenuBar();

常用方法:

add(jMenu1);

JMenu菜单组件:
构造方法:

new JMenu(“文件”);//创建名为文件的菜单

常用方法:

add(jMenuItem1);

JMenuItem菜单子项组件:
构建方法:

new JMenuItem(“新建”);//创建名为新建的菜单子项

添加监听事件:

示例:给一个按钮添加监听事件
/*
 例如对一个按钮添加监听事件,如果单独创建一个外部类或内部类,那么这个类只被该按钮使用,就比较麻烦,所以,就创建一个匿名内部类,在哪使用在哪创建。
 
 匿名内部类,看似new了一个接口,实际上是有一个没有名字的类实现了接口
        
*/
jButton.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
              //此处写需要做的事
           }
       });

内部类:

1、什么是内部类?

在一个类的内部定义的类称为内部类。

/*
  类A称为外部类或宿主类
  类B称为内部类或嵌套类
*/
public class A{
    class B{
        
    }
}
2、什么时候会用到内部类?

某些功能只在某个类中自己使用,没有必要定义一个外部类(没有意义,其他地方根本用不到),所以就定义在某个类的内部使用即可。

内部类可直接使用外部类中的成员,私有成员也可以使用

3、内部类的分类

(1)成员内部类,也是在外部类的成员位置

(2)静态内部类,static修饰的内部类,只能使用外部类中的静态成员

(3)局部内部类,在外部类的某一个方法中或代码块中

(4)匿名内部类

​ 演变过程:

​ 外部类—>内部类—>匿名内部类

​ 匿名内部类是为了在内部类的基础上,进一步简化代码(有时候,定义的内部类只被使用一次,创建一个类就比较麻烦)

​ Java可以提供一个没有名字的类,实现某个接口,创建一个没有名字的类的对象,在哪使用就在哪创建即可。

4、内部类的意义

封装,使用内部类实现多继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值