今天总结java的几个组件吧!感觉好几天没有写了....

swingawt说起吧,这是个拥有很多丰富的方法的类的包,可以创建窗体、设置窗体可见、窗体Title、窗体关闭方式、窗体大小以及位置等等的方法、同时要是用窗体就需要建立一个画布,然后与窗体绑定,将一些组件增添到画布中去,这样就可以使用一些组件完成一些基本的功能,同时需要为组件添加监听,才能触发事件完成相应的功能,由于java组件与android组件有差别,即许多对应的名字不一样,且用法也会有出入,毕竟android有自己的一套api,但是要想学好android的界面,个人小小的认为还是可以先把java的研究研究再说吧

swing中有JButtonJFrameJLabelJPanelSwingConstants等等的已经封装好的类,所以我们只需要会如何使用便可以了,同样在awt中有BorderLayoutCardLayoutGridLayoutImage等等类,个人认为可以先看一下布局方式,下面先看一个东西南北中的布局吧:

package my01;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class Graphics extends JFrame{
      JButton south = new JButton("south");
      JButton west = new JButton("west");
      JButton north = new JButton("north");
      JButton east = new JButton("east");
      JLabel center = new JLabel("center",SwingConstants.CENTER);
      JButton[] jb = new JButton[]{west,north,east,south};
  public Graphics(){
      JPanel pnBasic = new JPanel();
      pnBasic.setColor.PINK);
       pnBasic.setLayout(new BorderLayout());
      for(int i=0;i<jb.length;i++){
          jb[i].addActionListener(new ButtonMonitor());
      }
      pnBasic.add(south,BorderLayout.SOUTH);
      pnBasic.add(west,BorderLayout.WEST);
      pnBasic.add(north,BorderLayout.NORTH);
      pnBasic.add(east,BorderLayout.EAST);
      pnBasic.add(center,BorderLayout.CENTER);
      setContentPane(pnBasic);
      setTitle("东西南北");
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setSize(200,200);
      setVisible(true);
  }
  public class ButtonMonitor implements ActionListener{
                                                                                                                                           
      @Override
      public void actionPerformed(ActionEvent e) {
                                                                                                                                               
          if(e.getSource() == jb[0]){
              center.setText("West");
          }else if(e.getSource() == jb[1]){
              center.setText("north");
          }else if(e.getSource() == jb[2]){
              center.setText("east");
          }else if(e.getSource() == jb[3]){
              center.setText("south");
          }
                                                                                                                                               
      }
  }
                                                                                                                                       
  public static void main(String[] args) {
      new Graphics();
  }
}

   运行结果如下显示:

java swing awt初级入门_java组件

   

下面根据这个大框的主体布局增加了一些图片的处理,给按钮添加了监听,让其完成图片的显示,在其中又用到了cardLayout的图片显示布局:

package my01;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Graphics1 extends JFrame {
    private CardLayout lyCard;
    JPanel pnBasic = new JPanel();
    JPanel jp1 = new JPanel();
    JPanel jp2 = new JPanel();
    JButton btnLast = new JButton();
    JButton btnNow = new JButton();
    JButton btnNext = new JButton();
    public Graphics1(){
        pnBasic.setLayout(new BorderLayout());
        lyCard = new CardLayout();
        jp1.setLayout(lyCard);
        JLabel[] jlArrShow = new JLabel[7];
        for(int i=0;i<jlArrShow.length;i++){
                jlArrShow[i] = new JLabel();
                ImageIcon icon = new ImageIcon("assets/logo/"+(i+1)+".png");
                jlArrShow[i].setIcon(icon);
                jp1.add(i+"",jlArrShow[i]);
        }
        pnBasic.add(jp1,BorderLayout.CENTER);
                                                                                                               
                                                                                                               
        jp2.setLayout(new GridLayout(1,3));
        String[] strArr = {"last","now","next"};
        JButton[] btnArr = new JButton[strArr.length];
        for(int i=0;i<btnArr.length;i++){
            btnArr[i] = new JButton(strArr[i]);
            btnArr[i].addActionListener(new ButtonMonitor());
            jp2.add(btnArr[i]);
        }
                                                                                                               
        pnBasic.add(jp2,BorderLayout.SOUTH);
        setContentPane(pnBasic);
        ImageIcon icon = new ImageIcon("assets/icon24.png");
        Image p_w_picpath = icon.getImage();
        setIconImage(p_w_picpath);
                                                                                                               
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setTitle("picture");
        setBounds(200,200,400,400);
        pack();
        setVisible(true);
    }
    public class ButtonMonitor implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            JButton btnClick = (JButton) e.getSource();
            String strBtnTxt = btnClick.getText();
            if("last".equalsIgnoreCase(strBtnTxt)){
                lyCard.previous(jp1);
            }else if("now".equalsIgnoreCase(strBtnTxt)){
                lyCard.first(jp1);
                lyCard.show(jp1, 2+"");
            }else if("next".equalsIgnoreCase(strBtnTxt)){
                lyCard.next(jp1);
            }
        }
                                                                                                               
    }
    public static void main(String[] args) {
        new Graphics1();
    }
}

  输出效果如下:

java swing awt初级入门_java组件_02

   对应的按钮也可有相应的布局如上面的Layout流式布局,点击上面的按钮图片会相应的改变,如果frame中要添加的东西很多,如数组,还有一些并列的许多属性时,可以封装出一个实体类,那样操作会更加简单,这一点是老师提供的宝贵意见,等以后弄出来再补上吧!对于更深一步的优化以后学会了再说吧,今天就只能少说点啦~^_^~