Java界面程序与用户交互



用户交互:

 JOptionPane

 
    消息对话框
    showMessageDialog
    确认对话框
     showConfirmDialog   返回整型
    输入对话框
     showInputDialog   //用户输入  返回字符串 可用Interger.parseInterger等转化为其他类型

  例程:

import javax.swing.JOptionPane;

public class JavaApp {
 public static void main(String[] args) {
  //弹出消息对话框
  JOptionPane.showMessageDialog(null, "hello world !");
  //弹出确认对话框
  int  option=JOptionPane.showConfirmDialog(null, "1+1=2?");
  if(option==JOptionPane.YES_OPTION)
   System.out.println("你选择的是Yes");
  else
   System.out.println("你选择的是No");
  String name=JOptionPane.showInputDialog("请输入你的名字:");
  int    age =Integer.parseInt(JOptionPane.showInputDialog("请输入你的年龄:"));
  JOptionPane.showMessageDialog(null, "你好,"+name+"\n你今年"+age+"岁了");
 }
}

Java界面程序与用户交互_第1张图片Java界面程序与用户交互_第2张图片Java界面程序与用户交互_第3张图片

Java界面程序与用户交互_第4张图片Java界面程序与用户交互_第5张图片

构建界面程序: JFrame 


  步骤:


         创建窗口对象    new JFrame
         设置布局        setLayout 
         添加组件        add
         设置事件监听    addActionListener  内部类 implements ActionListener重写actionPerformed方法


  辅助窗体设置:


          设置位置          setLoction  //不设默认(0,0)
          设置大小          setSize     //设置宽和高
          设置可见性        setVisable  //必须为true才可见
          设置是否固定窗口  setResizable
          设置默认关闭操作  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)


布局管理器:默认为BorderLayout


    BorderLayout  边框式布局 将整个容器划分成东南西北中五个方位来放置控件
    FlowLayout  流动式布局   按照顺序一个接一个由左向右的水平放置在容器中
    GridLayout    网格式布局 将整个容器划分成一定的行和一定的列
    BoxLayout     箱式式布局 可以指定在容器中是否对控件进行水平或者垂直放置
    GridBagLayout 网格包布局 一种更强大更灵活的布局方式
构建相应代码:


    窗口程序: 

  import java.awt.BorderLayout;
  import javax.swing.JButton;
  import javax.swing.JFrame;
  public class JFrameLayout {
      public static void main(String[] args) {
  JFrame jFrame=new JFrame("Hello World");
 
  jFrame.setLocation(100, 100);
  jFrame.setSize(200, 200);  //后面的相应改了大小
  jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jFrame.setVisible(true);
        }
      }

Java界面程序与用户交互_第6张图片

   1、BorderLayout 


    窗口程序里加入代码:

  jFrame.setLayout(new BorderLayout());
  jFrame.add(new JButton("东"),BorderLayout.EAST);
  jFrame.add(new JButton("西"),BorderLayout.WEST);
  jFrame.add(new JButton("南"),BorderLayout.SOUTH);
  jFrame.add(new JButton("北"),BorderLayout.NORTH);
  jFrame.add(new JButton("中"),BorderLayout.CENTER);



      效果如下
           Java界面程序与用户交互_第7张图片


   
   2、 FloatLayout


 窗口程序里加入代码: 

     jFrame.setLayout(new FlowLayout());
     jFrame.add(new JButton("one"));
     jFrame.add(new JButton("two"));
     jFrame.add(new JButton("three"));
     jFrame.add(new JButton("four"));
     jFrame.add(new JButton("five"));

  效果如下
            Java界面程序与用户交互_第8张图片


   3、GridLayout


    窗口程序里加入代码:
   jFrame.setLayout(new java.awt.GridLayout(4, 5));
   for(int i=0;i<4;i++)
    for(int j=1;j<=5;j++)
     jFrame.add(new JButton("button"+(5*i+j)));
       效果如下:
        Java界面程序与用户交互_第9张图片


    4、BoxLayout  和FlowLayout相似,但比FlowLayout更灵活


     JPanel jPanel=new JPanel();
     jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS));
     jPanel.add(Box.createVerticalStrut(50));
     jPanel.add(new JButton("one"));
     jPanel.add(new JButton("two"));
     jPanel.add(new JButton("three"));
     jPanel.add(new JButton("four"));
     jPanel.add(new JButton("five"));
     jFrame.add(jPanel);


          Java界面程序与用户交互_第10张图片
       
BoxLayout 往往和 Box 这个容器结合在一起使用,这么做的理由是,BoxLayout 是把控件以水平或者垂直的方向一个接一个的放置,如果要调整这些控件之间的空间,就会需要使用 Box 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。Box 容器提供了 4 种透明的组件,分别是 rigid area、strut、glue、filler。Box 容器分别提供了不同的方法来创建这些组件。这四个组件的特点如下:
•Rigid area 是一种用户可以定义水平和垂直尺寸的透明组件;
•strut 与 rigid area 类似,但是用户只能定义一个方向的尺寸,即水平方向或者垂直方           向,不能同时定义水平和垂直尺寸;
•当用户将 glue 放在两个控件之间时,它会尽可能的占据两个控件之间的多余空间,从而将两  个控件挤到两边;
•Filler 是 Box 的内部类,它与 rigid area 相似,都可以指定水平或者垂直的尺寸,但是 它可以设置最小,最大和优先尺寸。


5、GridBagLayout  页面布局的一个难点(后面会转载一篇有详细说明的博客)
 
 一般程序不会采用一个布局,而是多个布局的整合,通过JPanel等连接起来
 
常用图形组件:
      JPanel   JButton  JTextArea JPasswordField
      JLable   JCheckBox JRadioButton  JTextField
      JSlider  JComboBox JProgressBar  JScrollPane
      JTable   等

     

你可能感兴趣的:(Java自学笔记)