创建窗口mfc

创建一个窗口

import java.awt.*;

public class WindowDemo {
    public static void main(String[] args) {
        //创建窗口window对象
        Frame frame = new Frame("测试窗口");
        //设置大小
        frame.setSize(500,300);
        //设置位置
        frame.setLocation(100,100);
        //设置为可见
        frame.setVisible(true);

    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1URDp9At-1605521621959)(C:\Users\DZHooo\Pictures\Saved Pictures\微信图片_20201115185008.png)]

创建一个Panel容器放入window

import java.awt.*;

public class WindowDemo {
    public static void main(String[] args) {


        //创建一个window对象,因为panel以及其他容器,都不能独立存在,必须依附于window存在
        Frame frame = new Frame("这里演示Panel");
        //创建一个Panel
        Panel p = new Panel();
        //创建文本框和按钮,放入Panel
        p.add(new TextField("这是一个测试文本"));
        p.add(new Button("这是一个测试按钮"));
        //把Panel放入window
        frame.add(p);
        //同时设置大小位置
        frame.setBounds(100,100,500,300);

        frame.setVisible(true);

    }
}

按钮文字可能出现乱码,因为idea是UTF-8,要改成和操作系统一样的GBK才行

解决方法:

在VM options输入 -Dfile.encoding=gbk

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZjiEhpuf-1605521621963)(C:\Users\DZHooo\Pictures\Saved Pictures\微信图片_20201115185920.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWg0vzjo-1605521621965)(C:\Users\DZHooo\Pictures\Saved Pictures\微信图片_202011151859201.png)]

重新设置布局(FLowLayout)

用**setLayout()**设置布局管理器

        Frame frame = new Frame("这是布局演示");

        frame.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));//对齐方式  垂直间距  水平间距

        for (int i = 0; i < 100; i++) {
            frame.add(new Button(""+i));
        }
        //设置最佳大小
        frame.pack();

        frame.setBounds(100,100,1500,1000);
        frame.setVisible(true);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sEY7Z1m9-1605521621967)(C:\Users\DZHooo\AppData\Roaming\Typora\typora-user-images\image-20201115193913511.png)]

重新设置布局(BorderLayout)

        Frame frame = new Frame("这里测试BorderLayout");

        frame.setLayout(new BorderLayout(30,10));

        frame.add(new Button("东部按钮"),BorderLayout.EAST);
        frame.add(new Button("西部按钮"),BorderLayout.WEST);
        frame.add(new Button("南部按钮"),BorderLayout.SOUTH);
        frame.add(new Button("北部按钮"),BorderLayout.NORTH);
        frame.add(new Button("中部按钮"));

        frame.pack();

        frame.setBounds(100,100,500,300);
        frame.setVisible(true);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-en1vKqNt-1605521621970)(C:\Users\DZHooo\AppData\Roaming\Typora\typora-user-images\image-20201115194253773.png)]

如果不往某个区域放入组件,那么这个区域不会空白出来,而是被其他区域占用

例如:中间区域要放文本和按钮,可以先放入Panel,再把文本和按钮放入Panel里面

重新设置布局(GridLayout)

Frame默认布局管理器是BorderLayout

Panel默认布局管理器是FlowLayout

pack 有啥用

如果你没设置窗口大小啥的,大概就是撑开窗口,不然窗口会很小很小。

`void pack() 
使此窗口的大小适合其子组件的首选大小和布局。  `

这里是在Frame里放两个Panel,Window布局Panel,Panel再布局组件。

//计算器     
Frame frame = new Frame("这里演示GridLayout");

        Panel p = new Panel();

        p.add(new TextField(30));

        frame.add(p,BorderLayout.NORTH);

        Panel p2 = new Panel(new GridLayout(3,5,4,4));

        for (int i = 0; i < 10; i++) {
            p2.add(new Button(i+""));
        }
        p2.add(new Button("+"));
        p2.add(new Button("-"));
        p2.add(new Button("/"));
        p2.add(new Button("*"));
        p2.add(new Button("."));

        frame.add(p2);
        frame.pack();
        frame.setVisible(true);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvZ2wzTz-1605521621972)(C:\Users\DZHooo\AppData\Roaming\Typora\typora-user-images\image-20201116154053128.png)]

重新设置布局(CardLayout)

卡片一张一张叠着

需要创建CardLayout对象,因为下面用到CardLayout的方法

        Frame frame = new Frame("这里演示CardLayout");

        Panel p = new Panel();

        CardLayout card = new CardLayout();

        p.setLayout(card);

        String[] s = {"第一张","第二张","第三张","第四张","第五张"};

        for (int i = 0; i < 5; i++) {
            p.add(s[i],new Button(s[i]));
        }

        frame.add(p);

        Panel p2 = new Panel();
        Button b1 = new Button("上一张");
        Button b2 = new Button("下一张");
        Button b3 = new Button("第一张");
        Button b4 = new Button("最后一张");
        Button b5 = new Button("第三张");

        ActionListener actionListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = e.getActionCommand();
                switch (actionCommand){
                    case "上一张":
                        card.previous(p);
                        break;
                    case "下一张":
                        card.next(p);
                        break;
                    case "第一张":
                        card.first(p);
                        break;
                    case "最后一张":
                        card.last(p);
                        break;
                    case "第三张":
                        card.show(p,"第三张");
                        break;
                }
            }
        };

        b1.addActionListener(actionListener);
        b2.addActionListener(actionListener);
        b3.addActionListener(actionListener);
        b4.addActionListener(actionListener);
        b5.addActionListener(actionListener);

        p2.add(b1);
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        p2.add(b5);

        frame.add(p2,BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);


Listener(actionListener);

    p2.add(b1);
    p2.add(b2);
    p2.add(b3);
    p2.add(b4);
    p2.add(b5);

    frame.add(p2,BorderLayout.SOUTH);
    frame.pack();
    frame.setVisible(true);



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd9GaJjd-1605521621973)(C:\Users\DZHooo\AppData\Roaming\Typora\typora-user-images\image-20201116161937815.png)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值