精华内容
下载资源
问答
  • java Socket聊天程序在编写的时候需要我们注意很多的事情,本程序是基于Java Socket聊天程序,采用TCP传输协议,GUI制作,实现一对一 一对多之间的信息交互 分为服务端和客户端 ** Server具体代码: package qq.sevice...

    java Socket聊天程序在编写的时候需要我们注意很多的事情,本程序是基于Java Socket聊天程序,采用TCP传输协议,GUI制作,实现一对一 一对多之间的信息交互 分为服务端和客户端

    **

    Server具体代码:

    package qq.sevice;
    
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import qq.mode.Message;
    import qq.mode.User;
    import qq.view.ServerUI;
    import util.CloseUtil;
    import util.MessageType;
    
    /*
     * 监听等待客户端链接
     */
    
    /**
     * @author MuGe
     * @date 创建时间: 2019年6月22日 上午11:51:42
     * @version V1.0
     * @Project JQQInstantChatSystem3.0
     * @Package qq.sevice
     */
    public class ServerManager {
    	ObjectInputStream ois;
    	ObjectOutputStream oos;
    	User u = new User();
    	Message ms = new Message();
    	ServerSocket ss;
    	UserManager um = new UserManager();
    	private Connection conn = null;
    	private PreparedStatement pstat = null;
    	private ResultSet rs = null;
    	Socket s;
    	ServerUI su = new ServerUI();
    
    //	public static void main(String[] args) {
    //		new ServerManager();
    //	}
    
    	public ServerManager() {
    		try {
    			// 在3355端口监听
    			ss = new ServerSocket(8085);
    			System.out.println("Hello World 8085 端口为您服务!");
    			// 阻塞 等待客户端链接
    			while (true) {
    				s = ss.accept();
    				// 等待客户端发来的信息
    				ois = new ObjectInputStream(s.getInputStream());
    				u = (User) ois.readObject();
    				oos = new ObjectOutputStream(s.getOutputStream());
    				// Mark=1处理登录请求
    				if (u.getMark().equals("1")) {
    					checkUesr(s);
    				} // Mark=2处理注册请求
    				if (u.getMark().equals("2")) {
    					checkRegister(s);
    				}
    				if (u.getMark().equals("3")) {
    
    				}
    
    			}
    
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			// CloseUtil.closeAll(ss, s, ois, oos);
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			// CloseUtil.closeAll(ss, s, ois, oos);
    			e.printStackTrace();
    		}
    
    	}
    
    	/**
    	 * 获得好友数量
    	 */
    
    	public void getFriendNumber(Socket s) {
    
    	}
    
    	/**
    	 *核对用户登录信息
    	  */
    	public void checkUesr(Socket s) {
    		if (um.getQQname(u.getID()) == null) {
    			// message_user表示用户不存在,返回一个用户不存在的信息
    			ms.setMesType(MessageType.message_user);
    			try {
    				oos.writeObject(ms);
    				s.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				CloseUtil.closeAll(ss, s, ois, oos);
    				e.printStackTrace();
    			}
    		}
    		if (!(um.getQQname(u.getID()).getPassword()).equals(u.getPassword())) {
    			// message_login_fail表示密码错误,返回一个密码错误的信息
    			ms.setMesType(MessageType.message_login_fail);
    			try {
    				oos.writeObject(ms);
    				// 关闭连接
    				s.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				//CloseUtil.closeAll(ss, s, ois, oos);
    				e.printStackTrace();
    			}
    
    		}
    		if ((um.getQQname(u.getID()).getPassword()).equals(u.getPassword())) {
    			// message_succeed表示验证成功 ,返回一个登录成功的信息
    			ms.setMesType(MessageType.message_succeed);
    			try {
    				oos.writeObject(ms);
    				System.out.println("\n" + s.getInetAddress().getHostAddress() + "连接到服务器!\nID: " + u.getID() + "\n昵称: "
    						+ um.getQQname(u.getID()).getName());
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			// 单开一个线程,让该线程与该客户端通信
    			ServerClientThread sct = new ServerClientThread(s);
    			ManagerClientThread.addClientThread(u.getID(), sct);
    			// 启动与该客户通信的线程
    			sct.start();
    
    			// 并通知在线用户
    			sct.notifyotHer(Integer.toString(u.getID()));
    		}
    	}
    
    	/**
    	*核对注册信息
    	 */
    	public void checkRegister(Socket s) {
    		if ((um.getQQname(u.getID()) == null) && (um.getQQ(u.getName()) == null)) {
    			// 表示用户不存在,可以注册
    			ms.setMesType("4");
    			try {
    				oos.writeObject(ms);
    				um.addUser(u);
    				SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    				System.out.println(
    						"\n" + u.getID() + "号用户注册成功\n时间: " + sf.format(new Date()).toString() + "\n昵称: " + u.getName());
    				// 注册类
    				for (int i = 0; i < 2; i++) {
    					String a;
    					if (i == 0) {
    						a = "故事没我";
    					} else {
    						a = "南汐";
    					}
    					um.addFriendDefault(u.getID(), i + 1, a, i);
    
    				}
    				um.addGroup(u.getID());
    				um.addGroup_m_list(u.getID(), u.getName());
    				s.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				CloseUtil.closeAll(ss, s, ois, oos);
    				e.printStackTrace();
    			}
    		} else if (um.getQQ(u.getName()) != null) {
    			System.out.println("\n" + u.getName() + "-用户名已存在,不允许注册");
    			// 表示用户存在,不可以注册
    			ms.setMesType("5");
    			try {
    				oos.writeObject(ms);
    				s.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				// CloseUtil.closeAll(ss, s, ois, oos);
    				e.printStackTrace();
    			}
    		}
    	}
    
    }
    
    

    客户端主界面
    客户端主界面
    一对一聊天界面
    一对一聊天界面
    一对多聊天界面
    一对多聊天界面
    服务器的转发
    在这里插入图片描述

    源码地址:https://github.com/liumuge/JQQ

    展开全文
  • MVC在Java GUI项目中具体应用(概述篇)

    千次阅读 2008-12-17 16:30:00
    MVC在Java GUI项目中具体应用论文摘要n 在Java GUI项目中,程序设计或者编码时经常会碰到一些头疼的问题,例如需要的数据在自己需要的时候得不到,无奈增加一些静态变量或者公共函数来取得数据,或者应该刷新界面的...

    MVCJava GUI项目中具体应用

    文摘要<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    n  Java GUI项目中,程序设计或者编码时经常会碰到一些头疼的问题,例如需要的数据在自己需要的时候得不到,无奈增加一些静态变量或者公共函数来取得数据,或者应该刷新界面的时候得不到相关组件的对象等等。本来很好的设计最后被改的面目全非,甚至会被推翻了。本文提出自己总结的一个基于MVC模式的设计架构,来解决Java GUI项目中的一些常见问题。

    关键

    Java GUI MVC

    参考

    n  Java 设计模式》 JDK帮助文档

    1.      系统结构图

     

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

    1.1.  模型Model

    数据模型部分系统结构图:

     

    模型主要包含四部分。

    一、组件数据模型的注册管理器。主要管理组件的数据模型的注册以及在数据变化时能把及时通知数据模型。而具体的数据模型会把数据模型中的数据转换成适合的格式。组件模型层管理器提供一系列的组件需要的数据模型。

    二、数据结构的基础操作。数据结构的一些基础操作。基于这些基础操作,数据操作层可以做成更复杂的功能的操作。

    三、提供给程序直接调用的操作。这些操作可以分为可以可以UNDO,不可以UNDO,对UNDO没影响的三种。

    1.2.  控制Control

    控制主要包括系统结构图中的组件层的事件处理和动作命令中中的动作生成。

    一、组件层的事件处理:主要是对各个组件的鼠标事件,键盘事件,以及系统整理的快捷键的事件监听。例如按钮的点击事件,树组件中节点展开事件等等,这个都需要根据用户式样中的规定来对应处理,随需应变。

    二、动作命令层。该层中的操作比较比较好定义。一般来说,跟系统中的菜单,工具按钮,快捷键是相互对应的,该层为了确保相同功能的菜单项,工具按钮和快捷键能同步处理,也即菜单项,工具按钮和快捷键的功能能调用同一段代码。该功能主要参考SwingJMenuItemJButton使用Action对象的机制来建立的。利用这一机制,可以让一个Action对象控制多个JMenuItemJButton。虽然在Swing中只能在JMenuItemJButton中使用该机制,但是我们自己可以建立其他组件的这种机制。甚至能够建立自己的类库。

     

    1.3.  视图View

    视图主要包括组件层。包括按钮,菜单,菜单项,文本框,文本区域,树,表等一系列组件,也可以把简单组件合成的复合组件,例如对话框等等。

    2.      常见问题的解决

    本章介绍以下功能的对应:

    A.菜单条中菜单项,工具条中的按钮和快捷键可用性的统一管理。

    BUNDO/REDO功能

    CLOG功能和异常管理

    D.操作互斥的处理

    2.1.  菜单项,按钮和快捷键可用性的统一管理

    XXX(内部项目)组中的成员可能都了解,在XXX(内部项目)中系统功能菜单项,按钮以及快捷键的可用性都是分别对应的,也就是说都是各自独立的,当需要设置某个功能无效时,只能分别去设置菜单项,按钮以及快捷键的可用性,相同的代码分散在三个地方,如果再加一个相同功能的右键菜单呢,冗余程度也就可想而知。

    要实现该功能,我们可以操作SwingAction类的功能。JMenuItemJButton都有一个参数类型是Action的构造函数,当使用Action对象做参数建立JMenuItemJButton对象时,可以设置JMenuItemJButton的一些基本属性,如现实的文字,图标等等,还可以设置快捷键,最关键的一点是Action对象会与JMenuItemJButton关联,把Action设置成不可用,那么它关联的所有JMenuItemJButton都变成不可用的。在Action中设置的快捷键还会自动绑定到系统中去。

    但在这个地方需要使用工厂模式,使用一个工厂类ActionManager来确保Action对象唯一。保存Action的最佳方法就是哈希表,哈希表的key值可以选择ActionClass对象或者Action的类路径。这样又可以增加另外一个好处,就是可以在配置文件中配置菜单条和工具条,其中就可以使用的Action的类路径来设置JMenuItemJButton,在建立工具条时在结合ActionManagerJava中映射就可以了。

    听来听去,你或许会以为实现这些功能的代码会很多,但是你错了,这里面有很多都是Swing给你做好的,很多都是现成的。

    2.2.  UNDO/REDO功能

    这个功能主要参考Microsoft Word中的undo/redo的实现方法。使用的设计模式是命令模式。数据操作层中的一个操作就是一个命令。这些命令分为可以UNDO/REDO,不可以UNDO/REDO和不影响UNDO/REDO三种。每个操作都保存该操作进行时的参数和操作后的结果数据。

    如果遇到可以UNDO/REDO的操作,则把该操作保存在UNDO/REDO操作栈中。

    如果遇到不可以UNDO/REDO的操作,则清空UNDO/REDO操作栈中的所有操作。

    如果遇到不影响UNDO/REDO的操作,保持UNDO/REDO操作栈不变。

    当执行UNDO命令时,从UNDO/REDO操作栈中取出前一次的操作对象并调用undo方法,当执行REDO命令时,从UNDO/REDO操作栈中取出后一次的操作对象并调用redo方法。总之遵循一个原则,谁改变的事情谁就知道该如何还原。

    2.3.  LOG功能和异常管理

    LOG的信息的建立和写入都由操作来完成,也即谁做的事情谁记录。输出LOG地方可以用相应的方法传入。一个具体的操作对象自己知道该操作是否成功,该产生什么日志,发生错误时该如何处理等等。明确责任到具体操作。

    2.4.  操作互斥的处理

    GUI的项目中,多个操作往往可以同时执行,相互影响,继而产生负面作用。为解决这个问题,我们需要在程序中记录正在执行的操作,想要执行另一个操作前需要判断它和正在执行的操作间是否互斥。而正在实行的操作我们该如何记录,在哪里记录,是使用静态变量,还是使用单例。因为操作有很多,所以如果来记录需要的信息至关重要。

    这个正式添加操作执行管理器的重要作用。每个操作必须调用指定的方法才可以执行该操作,而我们就是用操作执行管理器去调用该方法,在操作执行管理器中记录正在执行的操作的信息。这样我们使所有的操作在一个地方执行,而且要在进行验证后再执行。这样可以解决问题了。

    此外增加操作执行管理器还有其他的作用,

    (1)    记录UNDO/REDO信息

    (2)    操作记录LOG信息的方法在这里调用

    (3)    其他的一些跟操作相关的功能

     

    展开全文
  • 刚接触Java GUI编程,第一个完成的项目就是这个简易计算器,废话不多说,先放上笔者写的代码/** * Calculator.java * Java简易计算器 * @author muyangren907 * @Time 2017年4月8日 * */ import java.awt.EventQueue...

    先上效果图:
    计算器效果图
    刚接触Java GUI编程,第一个完成的项目就是这个简易计算器,废话不多说,放上笔者写的代码

    /**
    * Calculator.java
    * Java简易计算器
    * @author muyangren907
    * @Time 2017年4月8日
    *
    */
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.BorderLayout;
    import javax.swing.JButton;
    import java.awt.Font;
    import java.awt.Color;
    import javax.swing.JLabel;
    import java.awt.event.ActionListener;
    import java.math.BigDecimal;
    import java.text.DecimalFormat;
    import java.awt.event.ActionEvent;
    import javax.swing.SwingConstants;
    import java.awt.Dialog.ModalExclusionType;
    import java.awt.Window.Type;
    
    public class Calculator {
    
        private JFrame frmJavav;
    
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        Calculator window = new Calculator();
                        window.frmJavav.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        /**
         * Create the application.
         */
        public Calculator() {
            initialize();
        }
    
        /**
         * Initialize the contents of the frame.
         */
        public class newans {
            private double ans = 0,num=0;
            private int operation = 0, decimal = 0,ifequals=0,equals=0;
    
    
            public String formatDecimal(double d, int newScale) {
                String pattern = "#.";
                for (int i = 0; i < newScale; i++) {
                    pattern += "0";
                }
                DecimalFormat df = new DecimalFormat(pattern);
                return df.format(d);
            }
    
            public newans() {
    
            }
    
    
    
    
    
            public int getIfequals() {
                return ifequals;
            }
    
            public void setIfequals(int ifequals) {
                this.ifequals = ifequals;
            }
    
            public double getNum() {
                return num;
            }
    
            public void setNum(double num) {
                this.num = num;
            }
    
    
            public void setEuqals(int equ){
                equals=equ;
            }
            public int getEquals(){
                return equals;
            }
            public void setAns(double num) {
                ans = num;
            }
    
            public double getAns() {
                return ans;
            }
    
            public void setOperation(int op) {
                operation = op;
            }
    
            public int getOperation() {
                return operation;
            }
    
            public void setDecimal(int xs) {
                decimal = xs;
            }
    
            public int getDecimal() {
                return decimal;
            }
    
    
    
        }
    
        private void initialize() {
    
            newans ans = new newans();
    
            frmJavav = new JFrame();
            frmJavav.setType(Type.UTILITY);
            frmJavav.setForeground(Color.DARK_GRAY);
            frmJavav.setTitle("Java\u8BA1\u7B97\u5668V1.0");
            frmJavav.setResizable(false);
            frmJavav.setBounds(100, 100, 307, 393);
            frmJavav.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JPanel panel = new JPanel();
            frmJavav.getContentPane().add(panel, BorderLayout.CENTER);
            panel.setLayout(null);
    
            JLabel lblNewLabel = new JLabel("0");
            lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
            lblNewLabel.setBounds(50, 20, 200, 50);
            panel.add(lblNewLabel);
    
            JButton btnNewButton = new JButton("7");
            btnNewButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 7);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 7.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 7);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 7.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
                }
            });
            btnNewButton.setBackground(Color.LIGHT_GRAY);
            btnNewButton.setBounds(50, 120, 50, 50);
            panel.add(btnNewButton);
    
            JButton btnNewButton_1 = new JButton("8");
            btnNewButton_1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 8);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 8.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 8);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 8.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
                }
            });
            btnNewButton_1.setBackground(Color.LIGHT_GRAY);
            btnNewButton_1.setBounds(100, 120, 50, 50);
            panel.add(btnNewButton_1);
    
            JButton button = new JButton("9");
            button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 9);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 9.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 9);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 9.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
                }
            });
            button.setBackground(Color.LIGHT_GRAY);
            button.setBounds(150, 120, 50, 50);
            panel.add(button);
    
            JButton button_1 = new JButton("4");
            button_1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 4);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 4.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 4);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 4.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
    
                }
            });
            button_1.setBackground(Color.LIGHT_GRAY);
            button_1.setBounds(50, 170, 50, 50);
            panel.add(button_1);
    
            JButton button_2 = new JButton("5");
            button_2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 5);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 5.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 5);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 5.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
                }
            });
            button_2.setBackground(Color.LIGHT_GRAY);
            button_2.setBounds(100, 170, 50, 50);
            panel.add(button_2);
    
            JButton button_3 = new JButton("6");
            button_3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 6);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 6.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 6);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 6.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
                }
            });
            button_3.setBackground(Color.LIGHT_GRAY);
            button_3.setBounds(150, 170, 50, 50);
            panel.add(button_3);
    
            JButton button_4 = new JButton("1");
            button_4.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 1);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 1.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 1);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 1.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
    
    
                }
            });
            button_4.setBackground(Color.LIGHT_GRAY);
            button_4.setBounds(50, 220, 50, 50);
            panel.add(button_4);
    
            JButton button_5 = new JButton("2");
            button_5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 2);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 2.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 2);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 2.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
    
                }
            });
            button_5.setBackground(Color.LIGHT_GRAY);
            button_5.setBounds(100, 220, 50, 50);
            panel.add(button_5);
    
            JButton button_6 = new JButton("3");
            button_6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
    
                    if (ans.getOperation() != 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(ans.getNum() * 10 + 3);
                            lblNewLabel.setText("" + (int) ans.getNum());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setNum(Double.valueOf(ans.formatDecimal(
                                        ans.getNum() + 3.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getNum());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getNum());
                            }
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(ans.getAns() * 10 + 3);
                            lblNewLabel.setText("" + (int) ans.getAns());
                        } else {
                            if (ans.getDecimal() < 16) {
                                ans.setAns(Double.valueOf(ans.formatDecimal(
                                        ans.getAns() + 3.0 / Math.pow(10, ans.getDecimal()), ans.getDecimal())));
                                lblNewLabel.setText("" + ans.getAns());
                                ans.setDecimal(ans.getDecimal() + 1);
                            } else {
                                lblNewLabel.setText("" + ans.getAns());
                            }
                        }
                    }
    
    
                }
            });
            button_6.setBackground(Color.LIGHT_GRAY);
            button_6.setBounds(150, 220, 50, 50);
            panel.add(button_6);
    
            JButton button_7 = new JButton("0");
            button_7.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    if (ans.getOperation() == 0) {
                        if (ans.getDecimal() == 0) {
                            ans.setAns(0);
                        } else {
                            if (ans.getAns() != 0) {
                                ans.setDecimal(ans.getDecimal() + 1);
                                if (Math.round(ans.getAns()) != 0)
                                    lblNewLabel.setText(ans.formatDecimal(ans.getAns(), ans.getDecimal() - 1));
                                else
                                    lblNewLabel.setText("0" + ans.formatDecimal(ans.getAns(), ans.getDecimal() - 1));
                            } else {
                                lblNewLabel.setText("0.");
                            }
    
                        }
                    } else {
                        if (ans.getDecimal() == 0) {
                            ans.setNum(0);
                            lblNewLabel.setText("0");
                        } else {
                            if (ans.getNum() != 0) {
                                ans.setDecimal(ans.getDecimal() + 1);
                                if (Math.round(ans.getNum()) != 0)
                                    lblNewLabel.setText(ans.formatDecimal(ans.getNum(), ans.getDecimal() - 1));
                                else
                                    lblNewLabel.setText("0" + ans.formatDecimal(ans.getNum(), ans.getDecimal() - 1));
                            } else {
                                lblNewLabel.setText("0.");
                            }
    
                        }
                    }
    
    
    
                }
            });
            button_7.setBackground(Color.LIGHT_GRAY);
            button_7.setBounds(50, 270, 100, 50);
            panel.add(button_7);
    
            JButton button_8 = new JButton(".");
            button_8.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
    
                    ans.setDecimal(1);
                    if(ans.getEquals()!=0)
                    {
                        ans.setEuqals(0);
                        ans.setOperation(3);
                        ans.setNum(0);
                        ans.setIfequals(0);
                        if (ans.getNum() != 0) {
                            ans.setDecimal(ans.getDecimal() + 1);
                            if (Math.round(ans.getNum()) != 0)
                                lblNewLabel.setText(ans.formatDecimal(ans.getNum(), ans.getDecimal() - 1));
                            else
                                lblNewLabel.setText("0" + ans.formatDecimal(ans.getNum(), ans.getDecimal() - 1));
                        } else {
                            lblNewLabel.setText("0.");
                        }
                    }
                    else{
                        if (ans.getOperation() == 0)
                            lblNewLabel.setText("" + (int) ans.getAns() + ".");
                        else
                            lblNewLabel.setText("" + (int) ans.getNum() + ".");
                    }
    
    
                }
            });
            button_8.setBackground(Color.LIGHT_GRAY);
            button_8.setBounds(150, 270, 50, 50);
            panel.add(button_8);
    
            JButton btnAc = new JButton("AC");
            btnAc.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setAns(0);
                    ans.setDecimal(0);
                    ans.setEuqals(0);
                    ans.setOperation(0);
                    ans.setNum(0);
                    lblNewLabel.setText("0");
                    ans.setIfequals(0);
                }
            });
            btnAc.setBackground(Color.LIGHT_GRAY);
            btnAc.setBounds(50, 70, 50, 50);
            panel.add(btnAc);
    
            JButton button_10 = new JButton("+/-");
            button_10.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setAns(-ans.getAns());
                    ans.setOperation(0);
                }
            });
            button_10.setBackground(Color.LIGHT_GRAY);
            button_10.setFont(new Font("宋体", Font.PLAIN, 10));
            button_10.setBounds(100, 70, 50, 50);
            panel.add(button_10);
    
            JButton button_11 = new JButton("%");
            button_11.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setAns(BigDecimal.valueOf(ans.getAns()).divide(BigDecimal.valueOf(100)).doubleValue());
                    ans.setOperation(0);
                }
            });
            button_11.setBackground(Color.LIGHT_GRAY);
            button_11.setBounds(150, 70, 50, 50);
            panel.add(button_11);
    
            JButton button_9 = new JButton("\u00F7");
            button_9.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setDecimal(0);
                    ans.setNum(0);
                    ans.setOperation(4);
                }
            });
            button_9.setBackground(Color.LIGHT_GRAY);
            button_9.setBounds(200, 70, 50, 50);
            panel.add(button_9);
    
            JButton button_12 = new JButton("\u00D7");
            button_12.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setDecimal(0);
                    ans.setNum(0);
                    ans.setOperation(3);
                }
            });
            button_12.setBackground(Color.LIGHT_GRAY);
            button_12.setBounds(200, 120, 50, 50);
            panel.add(button_12);
    
            JButton button_13 = new JButton("\u2014");
            button_13.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setDecimal(0);
                    ans.setNum(0);
                    ans.setOperation(2);
                }
            });
            button_13.setBackground(Color.LIGHT_GRAY);
            button_13.setBounds(200, 170, 50, 50);
            panel.add(button_13);
    
            JButton button_14 = new JButton("+");
            button_14.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setDecimal(0);
                    ans.setNum(0);
                    ans.setOperation(1);
                }
            });
            button_14.setBackground(Color.LIGHT_GRAY);
            button_14.setBounds(200, 220, 50, 50);
            panel.add(button_14);
    
            JButton button_15 = new JButton("=");
            button_15.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    ans.setEuqals(1);
                    // 精确计算
                    switch (ans.getOperation()) {
                    case 1:
                        ans.setAns(BigDecimal.valueOf(ans.getAns()).add(BigDecimal.valueOf(ans.getNum())).doubleValue());
                        break;
                    case 2:
                        ans.setAns(
                                BigDecimal.valueOf(ans.getAns()).subtract(BigDecimal.valueOf(ans.getNum())).doubleValue());
                        break;
                    case 3:
                        ans.setAns(
                                BigDecimal.valueOf(ans.getAns()).multiply(BigDecimal.valueOf(ans.getNum())).doubleValue());
                        break;
                    case 4:{
                        if(ans.getNum()==0){
                            ans.setAns(0);
                            ans.setDecimal(0);
                            ans.setEuqals(0);
                            ans.setIfequals(1);
    
                        }else{
                            ans.setAns(BigDecimal.valueOf(ans.getAns()).divide(BigDecimal.valueOf(ans.getNum()),16,BigDecimal.ROUND_HALF_UP).doubleValue());
                        }
                    };break;
                    default:
                        break;
                    }
    
                    if (ans.getAns() == Math.round(ans.getAns())) {
                        ans.setDecimal(0);
                    } else {
    
                    }
    
                    if(ans.getIfequals()!=0){
                        lblNewLabel.setText("错误");
                    }
                    else{
                        if (ans.getAns() == Math.round(ans.getAns()))
                            lblNewLabel.setText("" + (int) ans.getAns());
                        else
                            lblNewLabel.setText("" + ans.getAns());
                    }
    
    
                }
            });
            button_15.setBackground(Color.LIGHT_GRAY);
            button_15.setBounds(200, 270, 50, 50);
            panel.add(button_15);
    
        }
    }

    源码及打包生成的jar及exe文件均已上传至网盘(1.0为本计算器)
    链接: https://pan.baidu.com/s/1skQnqhf
    密码: 牛B
    仅供交流,引用请注明作者

    展开全文
  • 点击下载源码,提取码: it8w 一个简单的仓库管理系统,其功能包含:用户登录注册、仓库管理、查询等多功能管理系统,通过连接关系数据库MySQL,实现系统动态程序

    点击下载源码,提取码: it8w
    一个简单的仓库管理系统,其功能包含:用户登录注册、仓库管理、查询等多功能管理系统,通过连接关系数据库MySQL,实现系统动态程序

    展开全文
  • 最近在做开发的时候有用到红、绿、蓝三色号的色彩调节,然后想使用某种色彩还需要去相关的网站上进行查询很是麻烦,于是就想着利用JavaGUI开发一个简单的调色器。可以自行调节色彩并且获取到对应的红绿蓝三种色号...
  • 泡泡龙经典小游戏 在敲代码之前一定要了解清楚基本规则和算法,不能盲目的写。 1.游戏规则: 由当前泡泡出发,经过若干个相邻泡泡,存在可连到顶端的通路,则认为该泡泡具有挂点,不会下坠。当泡泡失去挂点则下坠。...
  • 3. 在没有java环境的电脑上使用问题 1. Jar包内部外部文件读取问题 通常项目中会用到图片文件、音乐文件、配置文件等,这些文件除了配置文件一般放在jar包外部,其他文件一般导出Jar时都放在Jar内部,这时你...
  • 根据B站视屏学习,制作一个简单的javaGui游戏项目(贪吃蛇)分享给大家。该项目不需要太多基础,只要懂得一些基本的Gui操作,基本的算法即可完成。
  • 刚学习Java的小伙伴肯定觉得在控制台输入、打印的操作low爆了吧,那么你可以试一试画图板项目。完成这个项目之后,你可以制作一个属于自己的画图板,来取代电脑自带的画图板 通过这个项目,你可以学习到GUI的基本...
  • Java GUI编程。里面有扫雷小游戏的完整代码及其资源。
  • Java GUI编程。里面有弹钢琴小游戏的完整代码及其资源。
  • 使用开发Java GUI桌面应用,虽然说现在很少用java开发桌面应用,今天没事,在idea重温一下Java GUI,发现功能很强度很方便。 下面把细节分享给大家。...一、创建Java GUI项目 二、快速做GUI界面 ...
  • 本系统采用JAVA GUI,即Java Swing包开发,利用Java Socket进行客户端和服务器进行通信系统界面美观,数据库完整,由于项目进展时间,没有为数据库表间添加关系(外键,触发器等),代码仅供参考,请勿用于他途。...
  • 本博客主要对javaGUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局、控件等相关知识。本博客所进行的讲解及工程的创建等,都是基于Intellij ...
  • Java swing GUI 拖放项目实践

    千次阅读 2019-06-13 21:43:06
    Java Swing GUI文件拖拽 http://blog.csdn.net/hhzxj2008/article/details/5100717
  • JAVA GUI 计算器制作

    2020-01-10 20:38:11
    项目作为java gui 课程实训内容 效果图如: dai ma ru xia: package myn; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; /** * java计算器 * @author mayin *...
  • 项目运行视频:https://www.bilibili.com/video/BV17g4y1i7f6 项目最终目录结构: 运行效果图: 注册页面: 登录页面: 主界面: 管理员界面:
  • java GUI(实例项目--记事本)

    千次阅读 2015-08-14 00:23:21
    //java记事本 import java.awt.*; import java.awt.event.*; import java.io.*; public class MenuLianXi { //定义窗体 private Frame f; //定义菜单栏 private MenuBar menubar; //定义文本区 private
  • <div><p>Looks like the Java GUI's update check is failing as a result of Java not following HTTP redirects which are currently sent from http -> https by CloudFlare.</p><p>该提问来源于开源项目&...
  • getSelectedFile 转载 List的toArray()方法和toArray(T[] a)转载 getPath()与getAbsolutePath()的区别转载
  • 本系统采用JAVA GUI,即Java Swing包开发,利用Java Socket进行客户端和服务器进行通信系统界面美观,数据库完整,由于项目进展时间,没有为数据库表间添加关系(外键,触发器等),代码仅供参考,请勿用于他途。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,627
精华内容 2,250
关键字:

javagui项目

java 订阅