Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1699932
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: Java

2011-02-24 19:02:40


package hello;


import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
/**
 * swing基础实例
 * @author HZ20232
 *
 */

public class Hello{
    public static void main(String args[])throws Exception{
        NewFrame frame1 = new NewFrame();
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//一定要设置关闭

        frame1.setVisible(true);
    }
}
class NewFrame extends JFrame{
    private JLabel label1;
    private JButton button1;
    private JTextField text1;
    private JComboBox box;
    private JMenuBar menuBar;
    private JSlider slider;
    private JSpinner spinner;
    private JToolBar toolBar;
    
    public NewFrame(){
        super();
        this.setSize(300,500);
        this.getContentPane().setLayout(null);//设置布局控制器

//        this.getContentPane().setLayout(new FlowLayout());//设置布局控制器

//        this.getContentPane().setLayout(new GridLayout(1,2));//设置布局控制器,需要给出设定的行列数目

//        this.getContentPane().setLayout(new BorderLayout());//设置布局控制器,以North,South,West,East,来控制控件布局

//        this.getContentPane().setLayout(new GridBagLayout());//设置布局控制器

        this.add(this.getTextField(),null);//添加文本框

        this.add(this.getButton(),null);//添加按钮

        this.add(this.getLabel(),null);//添加标签

        this.add(this.getBox(),null);//添加下拉列表框

        this.setJMenuBar(this.getMenu());//添加菜单

        this.add(this.getSlider(),null);
        this.add(this.getSpinner(),null);
        this.add(this.getToolBar(),null);
        this.setTitle("Hello World!");//设置窗口标题

    }
    private JToolBar getToolBar(){
        if(toolBar==null){
            toolBar = new JToolBar();
            toolBar.setBounds(103,260,71,20);
            toolBar.setFloatable(true);
        }
        return toolBar;
    }
    private JSpinner getSpinner(){
        if(spinner==null){
            spinner = new JSpinner();
            spinner.setBounds(103,220, 80,20);
            spinner.setValue(100);
        }
        return spinner;
    }
    private JSlider getSlider(){
        if(slider==null){
            slider = new JSlider();
            slider.setBounds(103,200,100, 20);
            slider.setMaximum(100);
            slider.setMinimum(0);
            slider.setOrientation(0);
            slider.setValue(0);
        }
        return slider;
    }
    /**
     * 菜单的级别JMenuBar->JMenu->JMenuItem
     * 三级都是1:n的关系
     * 最后添加菜单用的SetJMenuBar方法
     * @return 建立好的菜单
     */

    private JMenuBar getMenu(){
        if(menuBar==null){
            menuBar = new JMenuBar();
            JMenu m1 = new JMenu();
            m1.setText("文件");
            JMenu m2 = new JMenu();
            m2.setText("编辑");
            JMenu m3 = new JMenu();
            m3.setText("帮助");
            
            JMenuItem item11 = new JMenuItem();
            item11.setText("打开");
            JMenuItem item12 = new JMenuItem();
            item12.setText("保存");
            JMenuItem item13 = new JMenuItem();
            item13.setText("退出");
            
            JMenuItem item21 = new JMenuItem();
            item21.setText("复制");
            JMenuItem item22 = new JMenuItem();
            item22.setText("拷贝");
            JMenuItem item23 = new JMenuItem();
            item23.setText("剪切");
            
            JMenuItem item31 = new JMenuItem();
            item31.setText("欢迎");
            JMenuItem item32 = new JMenuItem();
            item32.setText("搜索");
            JMenuItem item33 = new JMenuItem();
            item33.setText("版本信息");
            
            m1.add(item11);
            m1.add(item12);
            m1.add(item13);
            
            m2.add(item21);
            m2.add(item22);
            m2.add(item23);
            
            m3.add(item31);
            m3.add(item32);
            m3.add(item33);
            
            menuBar.add(m1);
            menuBar.add(m2);
            menuBar.add(m3);
        }
        return menuBar;
    }
    /**
     * 设置下拉列表框
     * @return
     */

    private JComboBox getBox(){
        if(box==null){
            box = new JComboBox();
            box.setBounds(103,140,71,27);
            box.addItem("1");
            box.addItem("2");
            box.addActionListener(new comboxListener());//为下拉列表框添加监听器类

        }
        return box;
    }
    private class comboxListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            Object o = e.getSource();
            System.out.println(o.toString());
        }
    }
    /**
     * 设置标签
     * @return 设置好的标签
     */

    private JLabel getLabel(){
        if(label1==null){
            label1 = new JLabel();
            label1.setBounds(34,49,53,18);
            label1.setText("Name");
            label1.setToolTipText("JLabel");
        }
        return label1;
    }
    /**
     * 设置按钮
     * @return 设置好的按钮
     */

    private JButton getButton(){
        if(button1==null){
            button1 = new JButton();
            button1.setBounds(103,110,71,27);
            button1.setText("OK");
            button1.setToolTipText("OK");
            button1.addActionListener(new HelloButton());//添加监听器类,其主要的响应都由监听器类的方法实现

        }
        return button1;
    }
    /**
     * 监听器类实现ActionListener接口,主要实现actionPerformed方法
     * @author HZ20232
     *
     */

    private class HelloButton implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.out.println("Hello world!");
        }
    }
    /**
     * 设定文本域
     * @return
     */

    private JTextField getTextField(){
        if(text1==null){
            text1 = new JTextField();
            text1.setBounds(96,49,160,20);
        }
        return text1;
    }
}


   本小程序使用了几个简单常用的JLebel,JButton,JCombBox,JTextField,JSlider,JSpinner等等Swing控件,并且为JButton控件添加了监听器类,在点击JButton的时候在控制台输出HelloWorld。监听器类的行为由控件的事件触发。
   MVC设计模式,即模型-视图-控制器模式,它试图把角色分类,让负责显示的代码、负责处理数据的代码、对交互进行相应并驱动事件的代码分离开。就好比让服装设计师负责设计服装(负责处理数据),让模特(负责显示的代码)展示服装。布局控制器,控件必须放在面板合适的点上才能很好的使用,当然也可以用像素来设定控件的布局,但是当桌面的像素改变了呢?不同的用户有不同的桌面大小,那控件布局是不是也要跟着变化呢?布局控制器可以很好的完成这一点,一般常用的布局控制器有FlowLayout,GridLayout,GridBagLayout,BorderLayout等等,使用方法setLayout(new FlowLayout())来更改面板的布局控制器。
阅读(37572) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

最代码2014-09-23 11:57:17

java swing demo源代码下载:http://www.zuidaima.com/share_topic/kSwing%E5%92%8CAWT%E5%BC%80%E5%8F%91-p1-s1.htm

chinaunix网友2011-03-06 17:36:30

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com