class ActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) {
String name = e.getActionCommand();
if (tf.getText().equals("")) {
str1 = "0";
} else if (If) {
str1 = tf.getText();
If = false;
} if (name == "十六进制") {
// 将十进制转换成十六进制
Double i = Double.parseDouble(str1);
Integer o = i.intValue();
tf.setText(Integer.toHexString(o));
// 设置A-F } else if (name == "十进制") {
// 设置button
tf.setText(str1);
} else if (name == "八进制") {
Double i = Double.parseDouble(str1);
Integer o = i.intValue();
tf.setText(Integer.toOctalString(o));
} else if (name == "二进制") {
Double i = Double.parseDouble(str1);
Integer o = i.intValue();
tf.setText(Integer.toBinaryString(o));
}
            }
        }以上是我对四个JRadioButton设置的监听jr1 = new JRadioButton("十六进制");jr2 = new JRadioButton("十进制");jr2.setSelected(true);jr3 = new JRadioButton("八进制");jr4 = new JRadioButton("二进制");
现在的问题是不管我选择了哪个JRadioButton,默认都是当成十进制数,如果我选择jr1,然后输入45,它仍然会把45当成十进制数,而不是十六进制数。求高手指导!

解决方案 »

  1.   

    (name == "十六进制")用
    name.equals("十六进制");
      

  2.   

    对用name.equals("十六进制");
    equals()才是判断String类型的是否相等
      

  3.   

    这个应该没什么关系的,我觉得是我的算法设计的有问题。之前设计了一个算法,就是在空白的情况下,先选择jr1,那么此时我们输入的数应该是一个16进制的数才对,但是你要再输入数,之后再按一次jr1才是正确结果。如果你输入完数后,就去按jr2的按钮或其他按钮,它就把这个数当成你后面按的进制数了····
      

  4.   

    看你上面代码,只要整数部分step 1:限制JTextField只能输入整数字符串;(继承 PlainDocument)
    step 2:
    Integer.parseInt(str,8);
    or Integer.parseInt(str,16);
    or Integer.parseInt(str,10);
      

  5.   

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;import javax.swing.JLabel;
    import javax.swing.JTextArea;
    public class GetMessage extends Thread{
    private int i;
    String v;JLabel label=null;
    private JTextArea text;
    public GetMessage(int i,JTextArea text) {this.i=i;
    this.text=text;
    }public void run(){
    try {
    ServerSocket so = new ServerSocket(i);
    Socket s = so.accept();
    while(true){
    InputStreamReader i = new InputStreamReader(s.getInputStream());
    BufferedReader b = new BufferedReader(i);
    v= b.readLine();
    text.append("对方说"+v+"\n");
    }
    } catch (IOException e) {
    //label.setText("对方已经下线");
    text.append("对方下线了");
    }
    }
    }SendMessage.java客户端:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;import javax.swing.JLabel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    public class SendMessage extends Thread {
    private String ip;
    private int i;
    Socket s = null;
    JLabel label=null;
    JTextField text;
    JTextArea text1;
    public SendMessage(String ip,int i,JTextArea text1) {
    // TODO Auto-generated constructor stub
    this.ip=ip;
    this.i=i;
    this.text1=text1;}
      public void run(){
     
      while(true){
    try {
    s = new Socket(ip,i);
    text1.setText("连接成功"+"\n");
    break;
    } catch (Exception e) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e1) {
    System.out.println("出错了。");
    }

      }
     
      }  
     
      public void send(String message)
      {
    try {PrintStream p = new PrintStream(s.getOutputStream());p.println(message);
    } catch (Exception e1) {
    System.out.println("异常"+e1.getMessage());
    }
    }
       
       
    }Test.java 简单的界面和测试类
    import java.awt.*;import java.awt.event.*;
    import java.io.ByteArrayInputStream;
    import java.io.InputStream;
    import java.util.*;import javax.swing.*;
    import javax.swing.event.*;
    class WindowTextArea extends JFrame implements ActionListener
    {  String s;
    JTextArea text1;
      JTextArea text2;
      JButton button1,button2,button3;
      SendMessage t2;
      GetMessage t1;
      JLabel lable1,lable2;
      JTextField text;  WindowTextArea() 
      { this.s=s;
       
      lable1=new JLabel("对方ip");
      text=new JTextField(20);
       
       
      text1=new JTextArea(6,18);
      text2=new JTextArea(6,18);
      text2.setEditable(false);
      button1=new JButton("发送");
      button2=new JButton("关闭");
      button3=new JButton("确定ip");
       
      setBounds(100,100,450,300);
      setVisible(true);
      Container con=getContentPane(); 
      con.setLayout(new FlowLayout());
      con.add(lable1);
      con.add(text);
      con.add(button3);
       
      con.add(new JScrollPane(text1));
      con.add(new JScrollPane(text2));
      con.add(button1);
      con.add(button2);
       
      button1.addActionListener(this);
      button2.addActionListener(this);
      button3.addActionListener(this);
      con.validate();
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
       
       
      }
       
      public void runthread(String ip)
      {
    t1 = new GetMessage(4066,text2);
    t1.start();
    t2=new SendMessage(ip,4066,text2);
    t2.start();
      }   
      
       
     
       
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==button2)
    {
    System.exit(0);
    }
    if(e.getSource()==button1)
    {  
     
     text2.append(text1.getText()+"\n"); 
    t2.send(text1.getText());
     
    text1.setText("");
    }
    if(e.getSource()==button3)
    {  
    s=text.getText();runthread(s);
     }
    }
    }
    public class Test {/**
    * @param args
    */
    public static void main(String[] args) {new WindowTextArea();}
    }
    new WindowTextArea();}
    }向对方发送信息之前必须输入对方ip和点击确定ip按钮,文本区显示“连接成功”
    然后可以发送信息
      

  6.   

    java里头equals才是判断字符串内容是否相等的,==是看地址是不是一样的~