`

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

阅读更多

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

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

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

4、响应JTextField值变更事件;

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

 

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
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;
    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);
            jLabel.setFont(new Font("ITALIC", 0, 14));
            
            jTextField = new JTextField(textValue[i], SwingConstants.RIGHT);
            jTextField.setFont(new Font("Dialog", 0, 12));
            // 让动态追加的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();
                        
                        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.setPreferredSize(new Dimension(400, 280));
        scrollPanel.add(jScrollPane);
        scrollPanel.setVisible(true);
    }
}
 

 

 

1
1
分享到:
评论

相关推荐

    Java Swing桌面开发经典案例

    本资源“Java Swing桌面开发经典案例”包含了一系列实际应用中的示例,适合正在学习Java Swing或者希望提升GUI编程技能的开发者。 首先,我们要理解Swing的基本概念。Swing是轻量级的GUI框架,与AWT(Abstract ...

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

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

    水费信息管理系统 Java swing + mysql (窗体应用程序、GUI)

    《水费信息管理系统:Java Swing + MySQL 实现详解》 在信息技术日新月异的今天,各类管理系统已经广泛应用于各行各业,以提升工作效率和数据管理的准确性。本文将深入探讨一个基于Java Swing和MySQL的水费信息管理...

    课程设计-java swing带GUI界面的通讯录管理系统(源码+数据库+运行截图).zip

    总的来说,这个Java Swing通讯录管理系统提供了一个实用的案例,展示了如何利用Java GUI库和数据库技术来开发桌面应用。它可以帮助初学者理解Swing组件的使用、数据库操作、MVC设计模式以及良好的编程实践。同时,...

    java swing五子棋案例

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

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

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

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

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

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

    Java+Swing+MySQL实现的学生信息管理系统是一种基于Java编程语言,采用Swing作为图形用户界面(GUI)开发工具,结合MySQL数据库进行数据存储的应用程序。这个系统为管理学生信息提供了直观且用户友好的界面,实现了...

    Java+Swing+Mysql实现超市商品管理系统源码

    本项目是一个基于Java...这个Java+Swing+Mysql实现的超市商品管理系统,为超市运营提供了便利,同时也展示了Java后端开发与数据库管理的结合应用,对于学习Java编程和数据库管理的开发者来说,是一个不错的实践案例。

    基于Java swing带GUI界面的图书馆管理系统(源码+数据库).zip

    《基于Java Swing的图书馆...总之,基于Java Swing的图书馆管理系统是一个实用的案例,它不仅展示了GUI设计和数据库操作,还体现了软件工程中的模块化和可扩展性原则。无论是教学还是实际应用,都具有很高的参考价值。

    java Swing 实例

    在"Java+Swing图形界面开发与案例详解》实例代码(1)"这个文件中,我们可能看到如何创建和配置这些组件,以及如何响应用户的事件,如点击按钮、选择菜单项等。事件处理是通过添加事件监听器(EventListener)到组件上...

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

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

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

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本教程将深入讲解Java Swing的使用,包括基本组件、布局管理器、事件处理以及实际案例...

    java GUI程序案例

    本案例聚焦于Java GUI程序的设计和组件的使用,我们将深入探讨以下几个方面: 1. **Java Swing库**:Java GUI的主要构建模块之一是Java Swing库,它是Java AWT(Abstract Window Toolkit)的扩展。Swing提供了更多...

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

    Java Swing是Java GUI(图形用户界面)开发的重要库,它属于Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本资源"《java+swing图形界面开发与案例详解》源代码"提供了丰富的学习材料,帮助开发者...

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

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本资源 "[Java Swing图形界面开发与案例详解].王鹏等.扫描版" 提供了深入学习Java Swing...

    Java语言程序设计课程设计实训项目——应用Java-Swing-GUI组件技术实现课程选课系统GUI窗口(第1部分).pdf

    【Java Swing GUI组件技术】是Java程序设计中用于构建图形用户界面的重要工具。在这个课程设计实训项目中,学生被要求使用Java Swing库来创建一个课程选课系统的图形用户界面(GUI)。具体来说,主要涉及以下几个...

    Java Swing组件实现的日历程序

    总的来说,这个“Java Swing组件实现的日历程序”涵盖了Swing组件的使用、日期处理、事件监听、自定义组件和布局管理等多个方面,是一个很好的学习和实践Java GUI编程的案例。通过这样的项目,开发者不仅可以提升...

    服装销售系统java swing

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

Global site tag (gtag.js) - Google Analytics