首页 > 其他 > 详细

GUI

时间:2021-03-15 00:20:01      阅读:28      评论:0      收藏:0      [点我收藏+]

关于GUI的使用

布局管理器

  1. 流式布局
    new FlowLayout();
    /* LEFT
    RIGHT
    CENTER
    LEADING
    TRAILING*/

  2. 东西南北中
    new BorderLayout();
    /CENTER
    West
    East
    South
    North
    /

  3. 表格布局

    new GridLayout(1,0,0,0);
    //public GridLayout(int rows, int cols);

AWT

  1. 创建窗口
    public class Demo {
    public static void main(String[] args) {
    Frame frame = new Frame();//创建面板
    frame.setBounds(10,20,300,500);
    //设置面板出现的坐标(setLocation)
    // 面板的大小(setSize)
    frame.setBackground(Color.BLACK);
    //设置背景颜色,Color类用于封装颜色
    frame.setVisible(true);
    //设置面板可见性
    frame.setResizable(false);
    //面板大小可变性
    frame.setLayout(null);
    //设置布局

            frame.addWindowListener(new WindowAdapter(){
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });//关闭面板,构造了WindowAdapter的匿名内部类
        }
    }
    
  2. 创建面板
    Panel p = new Panel(new GridLayout(3,2));
    //创建面板
    p.setSize(100,200);
    p.setBackground(Color.CYAN);
    frame.add(p);//将面板加入弹窗中
    //加面板时可以设置布局

  3.      //实现按钮
             Button b = new Button("shit");//按钮
             b.setSize(50,200);
             b.addActionListener(new MyMonitor());
             //添加动作监听
             p.add(b);//添加按钮
    
    //实现接口
    
    class MyMonitor implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("嘿嘿嘿");
    }
    

    }

    //4. 实现文本框

    ```java
            TextField t = new TextField();
            t.setEchoChar(‘*‘);
            //密码的做法
    
            t.setSize(40,40);
            p.add(t);
            t.addKeyListener(new Demo());
    
        @Override
        public void keyPressed(KeyEvent e) {
            TextField t = (TextField)e.getSource();
          //这里获得输入
            String s = t.getText();
            System.out.println(s);
          //清空输入栏
            t.setText("");
        }
    //ps这里我用主类实现了接口,所以没写另一个类
    
  4. 画笔
    @Override
    public void paint(Graphics g) {
    g.setColor(Color.black);//设置颜色
    g.drawRect(50,50,60,60);//draw画空心
    g.fillOval(80,80,200,30);//fill实心
    g.setColor(Color.BLACK);
    }
    6.用鼠标画图
    private ArrayList points;
    //创建数组存储点的坐标
    //中间省略了对points的初始化

        @Override
        public void paint(Graphics g) {
            g.setColor(Color.red);
            Iterator it = points.iterator();
          //使用迭代器获得数组中数据
            while(it.hasNext()) {
                Point p =(Point)it.next();
              //再将数据转换成Point类,获得坐标
                g.fillOval(p.x,p.y,50,50);
            }
        }
        public void addPoints(Point p){
            points.add(p);
        }
        class MyMouseListener extends MouseAdapter{
          //添加了鼠标监听,使用了适配器
            @Override
            public void mousePressed(MouseEvent e) {
                MyFrame mf =(MyFrame)e.getSource();
              //获得资源
                mf.addPoints(new Point(e.getX(),e.getY()));
               //拿到坐标
                mf.repaint();
              //使点能够连续
            }
        }
    

Swing

tips

  1. Swing和AWT在一些地方大致相同,类名加了 ‘J’
  2. //java关闭窗口
    jFrame.setDefaultCloseOperation
    (WindowConstants.DISPOSE_ON_CLOSE);
    

小结

  1. Swing所有东西在Container中
    class MyJFrame extends JFrame{
    public void init(){
    setBounds(10,20,500,600);
    setVisible(true);

            Container container =this.getContentPane();
          //创建容器,获得当前容器,相当于拿到了内容(大雾)
            container.setBackground(Color.DARK_GRAY);
          setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        }
    }
    
  2. 弹窗
    //jb是一个按钮,添加一个动作监听,弹出窗口
    //用了匿名内部类
    jb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    new MyJDialog();
    }
    });

            container.add(jb);
    //编写弹窗
    class MyJDialog extends JDialog{
            public MyJDialog(){
            this.setBounds(10,20,500,600);
            this.setVisible(true);
    
            Container container =this.getContentPane();
            container.setBackground(Color.green);
    
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        }
    
    }
    
  3. 图标
    图标可以add在按钮上,也可以在标签上
    //要实现Icon接口
    class MyJFrame implements Icon{
    MyJFrame m = new MyJFrame(150,150);

            JLabel l = new JLabel(m);
      //把图标加到标签中
            l.setSize(500,500);
      //最好设置一个大小,不然看不见
            container.add(l);
          public MyJFrame(int width,int height){
            this.width = width;
            this.height = height;
    
        }
        @Override
        public void paintIcon(Component c, Graphics g, int x, int y) {
            g.setColor(Color.red);
            g.fillOval(x,y,width,height);
            g.setColor(Color.BLACK);
        }
      //实习的一个Icon方法
    }
    
  4. 文本域
    Container c =this.getContentPane();
    //获取容器
    JTextArea jt = new JTextArea(10,10);
    //建立文本域
    jt.setText("here is");
    JScrollPane js = new JScrollPane(jt);
    //滚动条
    c.add(js);

  5. 按钮
    //有图片的按钮
    jr = new JRadioButton();
    URL url = Demo02.class.getResource("tx.png");
    //获取图片资源
    Icon icon = new ImageIcon(url);
    jb = new JButton();
    jb.setIcon(icon);
    //加入按钮
    jb.setToolTipText("push it");
    //按钮提示
    jb.setSize(500,500);

    //单选按钮
            JRadioButton jrb = new JRadioButton("girl");
            JRadioButton jrb2 = new JRadioButton("boy");
            jrb.setSize(100,100);
            jrb2.setSize(100,100);
    
            ButtonGroup bg = new ButtonGroup();
    //将按钮添加到组中完成单选
            bg.add(jrb);
            bg.add(jrb2);
    
            container.add(jrb,BorderLayout.NORTH);
            container.add(jrb2,BorderLayout.SOUTH);
    
    //多选按钮且不需要装进组里
            JCheckBox jcb = new JCheckBox("boy");
            JCheckBox jcb2 = new JCheckBox("girl");
    
  6. 下拉框 列表框
    //下拉框
    JComboBox s = new JComboBox();
    //添加词条
    s.addItem(null);
    s.addItem("body");
    s.addItem("eyes");

            container.add(s);
    
    //列表框
            //String[] s = {"1","2","3"};静态
            Vector s = new Vector();//动态
    
            JList l = new JList(s);
            s.add("1");
    
            container.add(l);

GUI

原文:https://www.cnblogs.com/canmeng196/p/14534669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!