学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

帮忙做个小程序

帮忙做个小程序

实现两数相加
在文本框内
附件: 您所在的用户组无法下载或查看附件

TOP

改了下,能输入一个小数点了

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.text.AttributeSet;   
import javax.swing.text.BadLocationException;   
import javax.swing.text.PlainDocument;

public class Sum extends JFrame{
    private JTextField num1,num2,result;
    private JLabel operation;
    private JButton add;
    private Container container;
    
    public Sum(){
        super("两数相加");
        container = getContentPane();
        container.setLayout(new FlowLayout());
        num1 = new JTextField(10);
        num1.setDocument(new NumOnly());
        num2 = new JTextField(10);
        num2.setDocument(new NumOnly());
        result = new JTextField(10);
        result.setEditable(false);
        operation = new JLabel("+");
        add = new JButton("=");
        add.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    if(num1.getText().equals("")||num2.getText().equals("")){
                        JOptionPane.showMessageDialog(container,"您必须输入两个数","提示",JOptionPane.INFORMATION_MESSAGE);
                    }
                    else{
                        float n1 = Float.valueOf(num1.getText());
                        float n2 = Float.valueOf(num2.getText());
                        result.setText(String.valueOf(n1+n2));        
                    }
                }
            }
        );
        container.add(num1);
        container.add(operation);
        container.add(num2);
        container.add(add);
        container.add(result);
        
        pack();
        
        Dimension frameSize = getSize();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
        setResizable(false);
        setVisible(true);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public static void main(String args[]){
        Sum s = new Sum();
    }
    
    public class NumOnly extends PlainDocument{        
        private boolean dot = false;
        public void insertString(int offs,String str,AttributeSet a) throws BadLocationException{   
            for(int i=0;i<str.length();i++){  
                if((str.charAt(i)<'0'||str.charAt(i)>'9') && dot){   
                    return;   
                }
            }  
            if(str.substring(0,1).equals("."))
                dot = true;
            super.insertString(offs,str,a);      
        }
    }  
}

[ 本帖最后由 freish 于 2008-4-27 22:21 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

这是什么意思啊
本人不会JAVA,今天正好碰到这么个问题
附件: 您所在的用户组无法下载或查看附件

TOP

2楼对jse了解的真好...呵呵,说实在的类包我还是记的不多..楼上你是怎么引发错误的?我的没有...2楼的很好了...他对输入的数据做检测只能输入数字..这样转化的时候就没有类型错误了  if((str.charAt(i)<'0'||str.charAt(i)>'9')&&str.charAt(i)!='.')

[ 本帖最后由 sunkaidong 于 2008-4-27 21:54 编辑 ]
学习需要安静。。海盗要重新来过。。

TOP

引用:
以下是引用 sunkaidong 在 2008-4-27 21:41 的发言:

2楼对jse了解的真好...呵呵,说实在的类包我还是记的不多..楼上你是怎么引发错误的?我的没有...2楼的很好了...他对输入的数据做检测只能输入数字..这样转化的时候就没有类型错误了  if((str.charAt(i)'9')&&str.charA ...
LS给了提示
先前不能输入小数点
现在可以输入了

TOP

这个的内部类NumOnly更通用一点


import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.text.AttributeSet;   
import javax.swing.text.BadLocationException;   
import javax.swing.text.PlainDocument;

public class Sum extends JFrame{
    private JTextField num1,num2,result;
    private JLabel operation;
    private JButton add;
    private Container container;
    
    public Sum(){
        super("两数相加");
        container = getContentPane();
        container.setLayout(new FlowLayout());
        num1 = new JTextField(10);
        num1.setDocument(new NumOnly());
        num2 = new JTextField(10);
        num2.setDocument(new NumOnly());
        result = new JTextField(10);
        result.setEditable(false);
        operation = new JLabel("+");
        add = new JButton("=");
        add.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    if(num1.getText().equals("")||num2.getText().equals("")){
                        JOptionPane.showMessageDialog(container,"您必须输入两个数","提示",JOptionPane.INFORMATION_MESSAGE);
                    }
                    else{
                        float n1 = Float.valueOf(num1.getText());
                        float n2 = Float.valueOf(num2.getText());
                        result.setText(String.valueOf(n1+n2));        
                    }
                }
            }
        );
        container.add(num1);
        container.add(operation);
        container.add(num2);
        container.add(add);
        container.add(result);
        
        pack();
        
        Dimension frameSize = getSize();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
        setResizable(false);
        setVisible(true);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public static void main(String args[]){
        Sum s = new Sum();
    }
    
    public class NumOnly extends PlainDocument{        
        private boolean dot = false;
        public void insertString(int offs,String str,AttributeSet a) throws BadLocationException{   
            for(int i=0;i<str.length();i++){  
                if((str.charAt(i)<'0'||str.charAt(i)>'9') && dot){   
                    return;   
                }
            }  
            if(str.indexOf('.')!=-1)
                dot = true;
            super.insertString(offs,str,a);      
        }
    }  
}

TOP

2楼 编的还可以 输入字母

TOP

dingding

TOP

发新话题