Java Logo
Java二级在线二级在线
首页选择题程序题成为会员帮助

二进制gui计算器

请修改编辑器中的代码,完成一个图形界面程序,实现将整数转换为32位二进制字符串的功能,具体要求如下: 创建一个窗口,标题为“打印无符号整数位” 界面中包含一个输入框,用户输入Java有符号int范围内的合法整数(允许负数)后按回车触发事件 程序将该整数转换为 32 位二进制表示,每8位后追加一个空格(最后一组末尾也保留空格);负数显示32位二进制补码 结果显示在下方只读的文本框中 当关闭窗口时,程序应正常退出 运行后弹出窗口,在输入框中输入一个整数并回车,下方会显示该数对应的二进制位串。 说明:本题是图形界面程序,运行后会弹出窗口,控制台上不会有输出。评测按填入的代码文本判分,不比对运行结果。

//打印无符号整数位
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Main extends JFrame {
   public Main(){
      super( "打印无符号整数位" );
      Container c = getContentPane();
      c.setLayout( new FlowLayout() );
      c.add( new JLabel( "请输入整数: " ) );
      final JTextField output = new JTextField( 33 );
      JTextField input = new JTextField( 10 );
      input.addActionListener(
         new ActionListener() {
            public void _________________( ActionEvent e ){
               int val = Integer.parseInt(
                  e.getActionCommand() );
               _________________.setText( getBits( val ) );
            }
         }
      );
      c.add( input );
      c.add( new JLabel( "该数的二进制位表示是" ) );      
      output.setEditable( false );
      c.add( _________________ );
      setSize( 720, 70 );
      setVisible(true);
   }

   private String getBits( int value ){
      int displayMask = 1 << 31;
      StringBuffer buf = new StringBuffer( 35 );
      for ( int c = 1; c <= 32; c++ ) {
         buf.append(
            ( value & displayMask ) == 0 ? '0' : '1' );
         value <<= 1;
         if ( c % 8 == 0 )
            buf.append( ' ' );
      }
      return buf.toString();
   }

   public static void main( String args[] ){
      Main app = new Main();
      app.addWindowListener(
         new WindowAdapter() {
            public void windowClosing( ___________ e ){
               System.exit( 0 );
            }
         }
      );
   }
}

控制台

调试终端

准备就绪