`
a137268431
  • 浏览: 157778 次
文章分类
社区版块
存档分类
最新评论

Java swing的动态实现案例

 
阅读更多

Java swing (GUI)的动态实现案例:

1、创建一个JFrame,要显示的N个JLabel和JTextField被一个JPanel包含;

2、窗口大小不可变,N大于一定数量时显示滚动条;

4、响应JTextField值变更事件;

3、点击JButton时响应发送JTextField值事件;


package com.hblb.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class DataSendRecDemo extends JFrame {  
	  
    private static final long serialVersionUID = 1L;  
  
    private String[] labelName = {"name",  
                                  "address",  
                                  "ID",  
                                  "param4",  
                                  "param5",  
                                  "param6",  
                                  "param7",  
                                  "param8",  
                                  "param9"  
                                  };  //标题名字数组
  
    private String[] textValue = {"tp",  
                                  "xxxx",  
                                  "1234",  
                                  "www",  
                                  "00001",  
                                  "0123456789",  
                                  "abc",  
                                  "123",  
                                  "20120917090233"  
                                  };//
  
    private JPanel jPanel;// 实例化一个面板
    private JLabel jLabel;//实例一个label
    private JTextField jTextField;//实例一个文本编辑字段
    private JButton jButton;//实例一个按钮
    private String[] textValueTemp = textValue;//实例默认值  
      
    public DataSendRecDemo() {//构造函数
        super();  
        initFrame();//初始化
    }  
      
    public static void main(String[] args) {  
        EventQueue.invokeLater(new Runnable() {  
            @Override  
            public void run() {  
                DataSendRecDemo srDemon = new DataSendRecDemo();  
                srDemon.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                srDemon.setVisible(true);  
                srDemon.setLocation(100, 100);  
                srDemon.setResizable(false);  
            }  
        });  
    }  
      
    public void initFrame() {  
        setTitle("The demon of the iphone send data");//设置窗口标题
        setSize(350, 222);  
          
        jPanel = new JPanel();  
        jPanel.setBorder((BorderFactory.createTitledBorder("Send type struct by key : value")));//设置标题样式 
        jPanel.setLayout(new GridLayout(labelName.length, 2));//设置布局采用网格的样式  行*列
          
        // 动态追加JLabel和JTextField  
        for (int i = 0; i < labelName.length; i++) {  
            jLabel = new JLabel(labelName[i], SwingConstants.LEFT);//设置Label左对齐
            jLabel.setFont(new Font("ITALIC", 0, 14));  
              
            jTextField = new JTextField(textValue[i], SwingConstants.RIGHT);  
            jTextField.setFont(new Font("Dialog", 0, 12));//根据指定名称、样式和磅值大小,创建一个新 Font。
            // 让动态追加的JLabel和JTextField相互匹配  
            jTextField.setName(labelName[i]);  
              
            // 给动态追加的JTextField绑定值变更事件   也就是把改变的值重新绑定下
            jTextField.addFocusListener(new FocusListener() {  
                String valChangedBef = "";  
                String valChangedAft = "";  
                String focusName = "";  
                JTextField focusValue;  
                  
                @Override  
                public void focusLost(FocusEvent e) {  
                    focusValue = (JTextField) e.getComponent();  
                    valChangedAft = focusValue.getText();  
                    if(!valChangedBef.equals(valChangedAft)){  
                        focusName = e.getComponent().getName().toString();//获得label的名字
                        for (int j = 0; j < labelName.length; j++) {  
                            if (focusName.equals(labelName[j])) {  
                                textValueTemp[j] = valChangedAft;  
                            }  
                        }  
                    }  
                }  
                  
                @Override  
                public void focusGained(FocusEvent e) {  
                    focusValue = (JTextField)e.getComponent();  
                    valChangedBef = focusValue.getText();  
                }  
            });  
              
            jPanel.add(jLabel);  
            jPanel.add(jTextField);  
            add(jPanel, BorderLayout.CENTER);//实例化边界布局
        }  
          
        JPanel panel = new JPanel(); //再实例化一个装按钮的面板
        jButton = new JButton("Send Data");  
          
        jButton.addActionListener(new ActionListener() {  
              
            @Override  
            public void actionPerformed(ActionEvent e) {  
                String sendDataStr = "";  
                for (int k = 0; k < labelName.length; k++) {  
                    sendDataStr += "'" + labelName[k] + "':'" + textValueTemp[k] + "',";  
                }  
                  
                sendDataStr = "{" + sendDataStr.substring(0, sendDataStr.length() - 1) + "}";  
                // 响应JButton事件,发送所有与JLabel一一对应的JTextField数据  
                sendData(sendDataStr);  
            }  
        });  
  
        panel.add(jButton);  
        add(panel, BorderLayout.SOUTH);//把这个面板放到最下面
          
        //这块是边界布局
        JPanel panelN = new JPanel();  
        add(panelN, BorderLayout.NORTH);  
        JPanel panelW = new JPanel();  
        add(panelW, BorderLayout.WEST);  
        JPanel panelE = new JPanel();  
        add(panelE, BorderLayout.EAST);  
          
        // 给JPanel追加垂直滚动条  
        addScroll();  
    }  
      
    public void sendData(String sendData) {  
          
        System.out.println("strMsgjson: " + sendData);  
    }  
      
    public void addScroll() {  
        Container scrollPanel = getContentPane();//获得整个面板内容 
        JScrollPane jScrollPane = new JScrollPane(jPanel);//给这个面板变成有滚动条的面板
        scrollPanel.add(jScrollPane);//然后把带有滚动条的面板加到这个最终的面板上
        scrollPanel.setVisible(true);  
    }  
}  


分享到:
评论

相关推荐

    JavaSwing图形界面开发与案例详解源代码

    Java Swing是目前图形界面设计的主流开发工具,《Java Swing图形界面开发与案例详解[1]》从实用的角度出发,通过大量实例全面介绍Java Swing中各种组件的应用及图形界面的开发技术。《Java Swing图形界面开发与案例...

    Java Swing桌面开发经典案例

    这些组件都是基于Java AWT(Abstract Window Toolkit)构建的,但Swing使用Java语言实现,提供了更好的性能和更丰富的特性。 2. **组件体系结构**: Swing组件基于JComponent类,它是AWT Component类的子类。...

    《Java Swing图形界面开发与案例详解》源代码_java_baseballkn8_

    《Java Swing图形界面开发与案例详解》是一本深入讲解Java GUI编程的书籍,源代码提供了丰富的实例,适合Java初学者入门学习。Swing是Java AWT(Abstract Window Toolkit)库的扩展,它提供了更为丰富的组件和更现代...

    Java Swing图形界面开发与案例详解 .王鹏等.扫描版.pdf

    Java Swing图形界面开发与案例详解 .王鹏等.扫描版.pdf

    java swing五子棋案例

    Java Swing五子棋案例是一个非常适合Java初学者进行实践的项目,它主要利用了Java的Swing库来构建一个图形用户界面(GUI),实现一个基本的五子棋游戏。在这个项目中,你将学习到以下几个核心知识点: 1. **Java ...

    Java Swing图形界面开发与案例详解

    本教程将深入讲解Java Swing的使用,包括基本组件、布局管理器、事件处理以及实际案例分析,旨在帮助开发者熟练掌握Swing的开发技巧。 在Swing中,开发者可以创建各种窗口组件,如按钮(JButton)、文本框...

    Java Swing JTable分页

    ### Java Swing JTable 分页实现详解 #### 一、引言 在开发基于Java Swing的应用程序时,我们经常需要处理大量的数据展示问题。对于表格形式的数据展示,`JTable`是一个非常常用且强大的组件。然而,当数据量过大时...

    Java+Swing+Mysql实现学生信息管理系统

    总而言之,这个Java+Swing+MySQL实现的学生信息管理系统是一个典型的桌面应用案例,展示了如何将Java的面向对象特性、Swing的图形界面设计和MySQL的数据库管理能力结合在一起,以实现一个实用的管理软件。...

    Java+Swing图形界面开发与案例详解实例代码

    本实例代码集主要围绕Java Swing进行讲解,通过具体的案例深入解析其使用方法。 在Java Swing中,基本的组件包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)等。这些组件可以组合在...

    Java Swing图形界面开发与案例详解及随书实例代码

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。Swing提供了丰富的组件集,包括按钮、文本框、菜单等,使得开发者能够创建功能强大的、...

    服装销售系统java swing

    《基于Java Swing的服装销售系统详解》 在IT领域,开发用户友好的应用程序是至关重要的。对于初学者来说,理解并应用面向对象编程思想、掌握GUI(图形用户界面)设计以及数据库管理是基础技能的基石。本文将深入...

    基于java swing的学生信息管理系统.zip

    在这个基于Java Swing的学生信息管理系统中,开发者利用Swing的强大功能,实现了对学 生信息的全面管理,包括登录、注册以及对学生信息的展示、添加、修改、删除和查询等核心功能。 首先,系统的核心是登录模块。在...

    javaswing图书馆管理系统源代码+数据库模型

    javaswing图书馆管理系统源代码+数据库模型 确保系统具有良好的系统性能,友好的用户界面。 较高的处理效率,便于使用和维护。 采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。 系统尽可能...

    [Java Swing图形界面开发与案例详解].王鹏等.扫描版

    开发者可以通过自定义TableModel来实现数据的动态更新和交互。 事件处理是Swing中的重要概念,它允许用户与GUI进行交互。例如,可以使用ActionListener接口监听按钮点击事件,或者用MouseListener和...

    《java+swing图形界面开发与案例详解》源代码

    本资源"《java+swing图形界面开发与案例详解》源代码"提供了丰富的学习材料,帮助开发者深入理解如何利用Java Swing构建功能丰富的图形用户界面。 在Java Swing中,组件是构成GUI的基本元素,例如按钮、文本框、...

    java-界面组件案例大全(Demo).rar_DEMO_JAVA SWING案例_java swing Demon 大全_ja

    这个“java-界面组件案例大全(Demo).rar”文件显然包含了一系列的Java Swing编程示例,总计139个完整的Demo,旨在帮助开发者深入理解和熟练掌握Java Swing的各种组件和功能。 Java Swing 提供了多种组件,如按钮...

    Java Swing图形界面开发与案例详解_带书签_高清完整版

    《Java Swing图形界面开发与案例详解》是由王鹏和何昀峰共同编著的一本专业书籍,ISBN号为978-7-302-18904-6。这本书深入浅出地介绍了使用Java Swing进行图形用户界面(GUI)开发的相关知识和技术。在Java编程领域,...

    Java+Swing图形界面开发与案例详解》实例代码

    在"Java+Swing图形界面开发与案例详解"这本书中,作者深入浅出地介绍了如何使用Swing来设计和实现GUI应用。 该书的实例代码包含了从第一讲到第八讲的源码,逐步引导读者从基础到进阶掌握Swing的使用。以下是这些讲...

Global site tag (gtag.js) - Google Analytics