1.gui (graphical user interface)

awt sun公司最早的gui,不美观,不兼容各平台
   swing : awt升级

2.顶层容器(只有一个)(其他的只能放这里)Jframe Jdialog对话框 Jwindow(x)

//在main方法写
   f=new Jframe();  
   f.setSize(300,300); //设置大小
   f.setTitle("hello");  //设置窗口标题
   f.setLocation(500,200);//设置在屏幕的位置,默认在左上角
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击关闭按钮,关闭程序,不用设置也可以(默认)
   f.setVisible(true); //可见,但是看不到,要设置大小
class Jframe extends JFrame{
          JButton b1,b2,b3;
          JPannel p;
          public MyFrame(){//放在构造方法里面
               //上面的代码改 
              
                b1= new JButton("aaa");    
                   // this.add(b1);//窗口添加按钮,不显示,覆盖了  
                  //this.add(b1);//覆盖了   
	p=new Panel(new FlowLayout( FlowLayout.LEFT,10,15));//左对齐,组件内部的对齐方式左 顶部距离
                                                 //可以自己new 出来定义
               p.add(b1);
               p.add(b2); 
              this.add(p);                  
          }
}//main方法new出来

-----完整代码-----

public class testMyFrame {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
    }
}

class MyFrame extends JFrame{
    JPanel jPanel;
    JButton jb,jb2;
    MyFrame(){
        setTitle("标题");
        setLocation(200,200);
        setBounds(200,200,300,500);

        jPanel=new JPanel();
        jb=new JButton("按钮1");
        jb2=new JButton("按钮2");
        jPanel.add(jb);
        jPanel.add(jb2);
        jPanel.setSize(300,300);

        add(jPanel);
        //记得最后一步才设置,不然不显示
        setVisible(true);

    }

}

2.JPanel中间容器(不能独立存在,放在其他容器中)

3.布局方式
panel.setLayOut(xxx);
1.FlowLayout 流布局,从左到右 从上到下(默认布局,默认中间.可以设置对齐方式)
2.BorderLayout 边界布局 容器分为 东西南北中

------------------
						北
               东       中        西 
                        南
             -------------------                   
 p=new Panel(new BorderLayout(10,15));//东西南北之间的间距      
 //button放的位置,自己可以添加pannel
p.add(btn1, BorderLayoutEAST);//没人放中间; WEST SOUTH NORTH CENTER
3.GridLayout网格布局 格子多大界面有多大(弹性)
private JButton[] btns;
              p=new Panel(new GridLayout(3,3));//3行3列 只能行等于列,不然只显示1列 
                 btns=new JButton[6];
                for:
                       p.add(btns[i]);

--------完整代码-----

public class testMyFrame {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
    }
}

class MyFrame extends JFrame{
    JPanel jPanel;
    JButton jb,jb2,jb3,jb4;
    MyFrame(){
        setTitle("标题");
        setLocation(200,200);
        setBounds(200,200,300,500);

        jPanel=new JPanel(new GridLayout(2,1));
        jPanel.setBackground(Color.RED);
        jPanel.setSize(300, 300);

        jb=new JButton("按钮1");
        jb2=new JButton("按钮2");
        jPanel.add(jb);
        jPanel.add(jb2);



        jPanel.setSize(300,300);

        add(jPanel);
        //记得最后一步才设置,不然不显示
        setVisible(true);

    }

}
4.卡片布局(用得少)(像扑克牌一样显示)
JPanel panel;
Frame2(){
    super("第3题习题");
    this.setSize(400,350);
    this.setLocation(300,200);

    panel = new JPanel();
    JButton jb1 = new JButton("按钮1");
    JButton jb2 = new JButton("按钮2");
    JButton jb3 = new JButton("按钮3");
    JButton jb4 = new JButton("按钮4");
    JButton jb5 = new JButton("按钮5");
    CardLayout cardLayout = new CardLayout();


    panel.setLayout(cardLayout);
    panel.add(jb1);
    panel.add(jb2);
    panel.add(jb3);
    panel.add(jb4);
    panel.add(jb5);



   //是在布局后的pannel后的,前面是完整放入的组件中first和last
    cardLayout.last(panel);
    this.add(panel);
5.BoxLayout盒布局(按照x轴或y轴排放元素)
p=new Panel(new .BoxLayout(p,));//垂直摆放 X相反
        public class houseWork3BoxGui {
    public static void main(String[] args) {
        Frame4 frame = new Frame4();


        frame.setVisible(true);

    }
}
class Frame4 extends JFrame {
    JPanel panel;
    Frame4(){
        super("第3题习题");
        this.setSize(400,350);
        this.setLocation(300,200);

        panel = new JPanel();
        JButton jb1 = new JButton("按钮1");
        JButton jb2 = new JButton("按钮2");
        JButton jb3 = new JButton("按钮3");
        JButton jb4 = new JButton("按钮4");
        JButton jb5 = new JButton("按钮5");
        BoxLayout boxLayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
        panel.setLayout(boxLayout);
        Insets insets = new Insets(0,100,0,0);
        panel.add(jb1);
        panel.add(jb2);
        panel.add(jb3);
        panel.add(jb4);
        panel.add(jb5);






        this.add(panel);


    }

}

java怎么强行关闭网页 javagui关闭窗口_开发语言

6.空布局(全部原始宽高置空,直接自己设置位置);   (考试还是使用这个比较方便)
//设置空布局
    setLayOut(null);
   //全部组件有个方法setBounds(0,0,200,200);//记得设置为初始位置,不然看不到
  //精确设置xy和大小,         
         #解决文本框不能设置大小的问题
         
            passwordField.setColumns(20);

3.事件(重点)(发生动作)

事件源(发生的场所,地方,按钮)
事件处理 对发生事件进行处理
事件监听器(接口) event Listener
监听事件发生

1.点击事件改颜色例子

  1. 高级监听事件有对应的方法等待实现,包括了按钮列表菜单
    ActionEvent------ActionListenner
  2. 低级事件…
    MouseEvent—MouseListenner
//写个监听类
class Listenner impls ActionListenner:  //鼠标MouseListenner
        actionPerformed(e)://处理事件函数
                     Object obj=(JButton)e.getSource();//得到事件源(得到这个btn)
                     if(btn==btnRed){//内部类所以可以对比对象,!!!向btn靠拢
                                p.setBackground(Color.red); //pannel
                      }else if(){xxxx}
                        
//组件添加我们的监听器监听器(注册监听器)
 Listsener l=new Listsener();       
 btnRed.addActionListener(l);    
 btnGreen.addActionListener(l);
使用匿名内部类(推荐)
             btnRed.addActionListener(new ActionListener(){
                          xxx(){

                            }
     });

5.适配器实现了方法(可以少写实现的方法) extends xxAdapter直接覆盖
(但是进行了细化)

extends MouseMotionAdapter//只有拖动
              this.repaint();//jframe的方法触发 重写的paint方法
              this.p.repaint();//相当于清除
               g.drawLine(prex,prey,x,y);
                //Btn1左 2中 3右

6.其他常用高级组件
//设置图片icon

Toolkit t = Toolkit.getDefaultToolkit();
        //设置Icon
        Image i = t.getImage("c:\\adbfe8e3432cc45860d2bdbf5f4bd407.gif");// 相对.java的路径 image:\\time.png
        this.setIconImage(i);//设置大容器的左上角图标
        
  //在组件画图片,JFrame覆盖方法
     public void paint(Graphics g){
      d.drawImage(icon.getImage(),50,50,this);//当前对象
    }             
     //在按钮添加图标
     new JButton("aaa",icon);
      //在jpanel不能设置

7.JLabel(不能响应用户操作)(不能时间监听)(可以类extends)

new JLabel("text",icon,xx); //只是提示功能

8.文本组件(必须setColume不然不显示)

JTextField类//接收单行文本,指定输入字符长度
   JpasswordField//密码框可以设置 可以遮挡的字符
   JTextArea //长文本 多行

-----高级组件------
9.对话框(可以独立存在的顶级容器)

1.模式(只有关闭按钮,对焦我们这个,点不了父窗口)有套路

jd=new JDialog(this,"提示", Dialog.ModalityType.APPLICATION_MODAL);

2.非模式(可以点父窗口)

jd=new JDialog(this,"提示", Dialog.ModalityType.MODELESS);
  new JDialog(Frame owner,title,Model);//指定父类窗体,标题,是否模式,默认非模式(不用!!!,只能指定Frame父类)
               .setVisible(true);//可见

3.自定义 trim去首尾空格
extends JDialog
//标准对话框(显示消息和获取消息) 确认消息,显示消息bti !!!(推荐使用,无论是是容器就可以用)

JOptionPane jOptionPane = new JOptionPane();
                jOptionPane.showMessageDialog(jp,"登录成功","提示",JOptionPane.ERROR_MESSAGE);
第一个可以null,消息内容,标题,自带的图标

//输入对话框

JOptionPane.showInputDialog(null,"输入数字");

java怎么强行关闭网页 javagui关闭窗口_servlet_02

//确认框

.showConfirmDialog(null,"msg","title",JOptionPane.YES_NO_OPTION);//自己可以选择
  int res = jOptionPane.showConfirmDialog(jp, "是否要保存");

//选择对话框

java怎么强行关闭网页 javagui关闭窗口_servlet_03

//
      JOptionPane jOptionPane = new JOptionPane();
      String options[]={"方案1","方案2","方案3"};
                  

//      int res = jOptionPane.showConfirmDialog(jp, "是否要保存");

                    jOptionPane.showOptionDialog(jp, "选择一个方案:",

                            "方案", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null,

                            options, "方案1");

//文件对话框

JFileChooser fc=    new JFileChooser();
        int val=fc.showOpenDialog(this);//打开对话框
        //如果点击对话框的打开按钮
        String name1 ="";
        String path="";
        if(val==JFileChooser.APPROVE_OPTION){
            //得文件名和路径
            name1=fc.getSelectedFile().getName();
            path= fc.getCurrentDirectory().toString();
        }

        FileReader d=new FileReader(path+"\\"+name1);

        //保存文件对话框
        fc.showSaveDialog(this);

10.带滚动条的面板(文本放不下)

new JScrollPane("文本");

11.颜色对话框

JColorChooser ch=new JColorChooser();
JDialog jDialog = new JDialog();
jDialog=JColorChooser.createDialog(this, "title", true, new JColorChooser(), new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {

    }
}, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {

    }
});
jDialog.setVisible(true);
Color color = ch.getColor();//得到颜色
System.out.println(color);//rgb的值

12.菜单栏(菜单[菜单项])

JMenuBar menuBar=   new JMenuBar();
this.setJMenuBar(menuBar);//放jframe的顶部
// 有监听器,是否分离式菜单
JMenu menu =new JMenu("title",true);
menuBar.add(menu);
JMenuItem item=new  JMenuItem("aaa");
JMenuItem item1=new  JMenuItem("bbb");
menu.add(item);

menu.add(item1);
menu.addSeparator();//组件之间加分割线
 item.addActionListener(new ActionListener() {
     @Override
     public void actionPerformed(ActionEvent e) {
         System.out.println("点击了");
     }
 });

13.工具栏 JToolBar(对比,不是只是放文字)

JToolBar bar=new JToolBar();

JButton btn =new JButton("save", new ImageIcon("c:\\adbfe8e3432cc45860d2bdbf5f4bd407.gif"));//设置标题和icon
btn.setToolTipText("保存");//鼠标放上的提示信息
bar.add(btn);
jp.add(bar);//放容器顶部

14.空布局的完整登录demo(包括了大部分上面提到的组件)

public class nullLayOut {
    public static void main(String[] args) throws FileNotFoundException {
        MyLayout myLayout = new MyLayout();
        myLayout.setVisible(true);
    }
}

class MyLayout extends JFrame {
    JPanel jp,jp2,jp3,jp4;
    JButton jb;
    JDialog jd;
    JLabel name_lable,pwd_lable,alter_lable;
    JTextField name;
    JPasswordField passwordField;

    JDialog jdl;
    MyLayout() throws FileNotFoundException {
        setTitle("登录");
        setBounds(100,200,500,500);
        setLayout(null);
        Toolkit t = Toolkit.getDefaultToolkit();
        //设置Icon
        Image i = t.getImage("c:\\adbfe8e3432cc45860d2bdbf5f4bd407.gif");
        this.setIconImage(i);



        jp=new JPanel();
        jp.setBounds(0,0,500,100);
        
        jd=new JDialog(this,"提示", Dialog.ModalityType.MODELESS);

//        jp.setBackground(Color.BLACK);
        jp2=new JPanel();
        jp2.setBounds(0,100,500,100);
//        jp2.setBackground(Color.RED);
        jp3=new JPanel();
        jp3.setBounds(0,200,500,100);
//        jp3.setBackground(Color.RED);
        jp4=new JPanel();
        jp4.setBounds(0,300,500,100);
//        jp4.setBackground(Color.RED);

        name_lable=new JLabel("用户名:");
        pwd_lable=new JLabel("密码:");
        alter_lable=new JLabel("提示");

        name=new JTextField();
        name.setColumns(20);
        name.setBounds(0,0,500,200);

        passwordField=new JPasswordField();

        name.setBounds(0,0,500,200);
        passwordField.setColumns(20);
        jb=new JButton("登录");
        jb.setIcon(new ImageIcon("c:\\adbfe8e3432cc45860d2bdbf5f4bd407.gif"));

        jb.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标点");
            }

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("鼠标按");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("鼠标释放");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("鼠标进入");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("鼠标离开");
            }
        });
        jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JButton jb=(JButton)e.getSource();
                if(jb.getText().equals("登录")){
                    System.out.println("设置背景");
                    jb.setBackground(Color.RED);
                }

                if(passwordField.getText().equals("aaa")&& name.getText().equals("user")){
                    jd.setBounds(0,0,100,100);
                    jd.setVisible(true);
                    JOptionPane jOptionPane = new JOptionPane();

//                    jOptionPane.showMessageDialog(jp,"message","提示",JOptionPane.ERROR_MESSAGE);
                    String options[]={"方案1","方案2","方案3"};
                    jOptionPane.showInputDialog(jp,"输入数字");

//                    int res = jOptionPane.showConfirmDialog(jp, "是否要保存");

                    jOptionPane.showOptionDialog(jp, "选择一个方案:",

                            "方案", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null,

                            options, "方案1");

//                    System.out.println(res);
                    alter_lable.setText("登录成功");
                    System.out.println("成功");
                }else{
                    alter_lable.setText("登录失败");
                    System.out.println("失败");
                }
            }
        });
        //======文件选择器=======
//        JFileChooser fc=    new JFileChooser();
//        int val=fc.showOpenDialog(this);//打开对话框
//        //如果点击对话框的打开按钮
//        String name1 ="";
//        String path="";
//        if(val==JFileChooser.APPROVE_OPTION){
//            //得文件名和路径
//            name1=fc.getSelectedFile().getName();
//            path= fc.getCurrentDirectory().toString();
//        }
//
//        FileReader d=new FileReader(path+"\\"+name1);

//        //保存文件对话框
//        fc.showSaveDialog(this);
        //======文件选择器=======


        //===========菜单栏================
        JMenuBar menuBar=   new JMenuBar();
        this.setJMenuBar(menuBar);//放jframe的顶部
        // 有监听器,是否分离式菜单
        JMenu menu =new JMenu("title",true);
        menuBar.add(menu);
        JMenuItem item=new  JMenuItem("aaa");
        JMenuItem item1=new  JMenuItem("bbb");
        menu.add(item);

        menu.add(item1);
        menu.addSeparator();//组件之间加分割线
         item.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
                 System.out.println("点击了");
             }
         });
        //===========菜单栏================

        //===========工具栏================
        JToolBar bar=new JToolBar();

        JButton btn =new JButton("save", new ImageIcon("c:\\adbfe8e3432cc45860d2bdbf5f4bd407.gif"));//设置标题和icon
        btn.setToolTipText("保存");//鼠标放上的提示信息
        bar.add(btn);
        jp.add(bar);//放容器顶部
        //===========工具栏================



        //======颜色选择器=======
        JColorChooser ch=new JColorChooser();
        JDialog jDialog = new JDialog();
        jDialog=JColorChooser.createDialog(this, "title", true, new JColorChooser(), new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

            }
        }, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

            }
        });
        jDialog.setVisible(true);
        Color color = ch.getColor();//得到颜色
        System.out.println(color);//rgb的值
     //======颜色选择器=======

        jp.add(name_lable);
        jp.add(name);
        jp2.add(pwd_lable);
        jp2.add(passwordField);
        jp3.add(jb);
        jp4.add(alter_lable);








        add(jp);
        add(jp2);
        add(jp3);
        add(jp4);


    }

}