【问题标题】:Storing GUI Values Into an Array将 GUI 值存储到数组中
【发布时间】:2013-12-19 06:30:57
【问题描述】:

给定我的转换器程序,如何将二进制输出存储到数组中,然后将其输出到屏幕上?目前它只输出转换后的数字,但我需要先将它存储到一个数组中。我还没有在控制台程序之外实现数组,所以我还不完全确定如何尝试。

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputMethodListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NumberConverter extends JPanel {
    private JLabel binaryLabel = new JLabel();
    private JLabel totalone = new JLabel();
    private JLabel totaltwo = new JLabel();
    private JLabel decimalLabel = new JLabel();
    private JTextField  hexdecString = new JTextField();
    private JButton convert;

    public NumberConverter() {

        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(400, 300));
        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        JLabel converterName = new JLabel("Hexadecimal Input");  

        convert = new JButton ("Convert");

        convert.addActionListener (new ButtonListener());
        add (convert);

        JPanel panelName = new JPanel(new GridLayout(2,2));
        panelName.add(converterName);
        panelName.add(hexdecString);
        add(panelName, BorderLayout.NORTH);

        JPanel totalPanel = new JPanel(new GridLayout(2,3));
        totalPanel.add(new JLabel("Binary:"));
        totalone = new JLabel("---- ---- ---- ---- ----");
        totalPanel.add(totalone);
        totalPanel.add(binaryLabel);

        JPanel totalPanel2 = new JPanel(new GridLayout(2,3));
        totalPanel2.add(new JLabel("Decimal:"));
        totaltwo = new JLabel("------");
        totalPanel2.add(totaltwo);
        totalPanel2.add(decimalLabel);

        JPanel south = new JPanel(new GridLayout(2,1));
        south.add(totalPanel);
        south.add(totalPanel2);
        add(south, BorderLayout.SOUTH);

    }        

    private class ButtonListener implements ActionListener {
        public void actionPerformed (ActionEvent event){       
            Integer n = Integer.valueOf(hexdecString.getText(), 16);
            decimalLabel.setText(String.valueOf(n));
            binaryLabel.setText(Integer.toBinaryString(n));     
        }
    }
}

【问题讨论】:

  • 当你说你必须将二进制输出存储到一个数组中时,你能更清楚地解释一下你的意思吗?二进制输出什么?为什么需要在数组中?
  • 无论转换后的十六进制数是什么,我都必须将其二进制等价物存储到一个数组中,然后输出。

标签: java arrays swing user-interface


【解决方案1】:

也许你想要类似的东西:

import java.util.Arrays;

...

Integer n = Integer.valueOf(hexdecString.getText(), 16);
decimalLabel.setText(String.valueOf(n));

// make an array of characters where each character 
// is a '1' or '0' corresponding to the binary representation of n
char[] charArray = Integer.toBinaryString(n).toCharArray(); 
binaryLabel.setText(Arrays.toString(charArray));

这会将二进制字符串数组转换为二进制字符数组。请注意,这并不比您拥有的更好,只是似乎符合您的要求。

【讨论】:

  • 好的,但是现在我如何才能将每个 4 的二进制集分组到一个数组中,例如 [1001][1010][0010][1000][1111]。最多 5 个数组
  • 如果这是家庭作业,您应该将其标记为此类,并寻求从课堂资源中学习。简而言之,您可以使用 for 循环从二进制字符串中提取子字符串(第一个索引 0-3,然后是 4-7 等)并将生成的子字符串放入字符串数组中。
  • 这是家庭作业,但现在我只是好奇。你能告诉我为什么我的转换按钮这么大吗?我似乎无法将其缩小到更小的尺寸
  • 这可能与您使用的 BorderLayout 有关。您只需将该按钮放入父 jpanel 中,同时为所有其他按钮创建子布局。看到这样的东西:docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2015-02-10
  • 2023-03-29
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
相关资源
最近更新 更多