Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 十六进制到二进制到十进制GUI_Java_Swing_Binary_Hex_Converter - Fatal编程技术网

Java 十六进制到二进制到十进制GUI

Java 十六进制到二进制到十进制GUI,java,swing,binary,hex,converter,Java,Swing,Binary,Hex,Converter,我正在尝试为此制作一个GUI。基本上你按下一个按钮,把十六进制转换成二进制和十进制。我觉得我的密码越来越接近了。到目前为止,我创建了一个drive类和一个panel类。我试图在我的panel类中创建方法,将十六进制转换为二进制,将十六进制转换为十进制。不过,我还是经常出错,我不知道为什么。我一直在遵循我的其他代码,但我一直在努力将这些方法放在panel类的底部。到目前为止,我会给你看我的课程 驾驶员等级: import javax.swing.JFrame; public class Dri

我正在尝试为此制作一个GUI。基本上你按下一个按钮,把十六进制转换成二进制和十进制。我觉得我的密码越来越接近了。到目前为止,我创建了一个drive类和一个panel类。我试图在我的panel类中创建方法,将十六进制转换为二进制,将十六进制转换为十进制。不过,我还是经常出错,我不知道为什么。我一直在遵循我的其他代码,但我一直在努力将这些方法放在panel类的底部。到目前为止,我会给你看我的课程

驾驶员等级:

import javax.swing.JFrame;


public class DriverConverter {

    //--------------------------------------------------------
    // GUI for Converter
    //--------------------------------------------------------
    public static void main(String[] args) {
    JFrame frame = new JFrame ("Hexadecimal to Binary and Decimal.");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
    frame.getContentPane().add(new ConverterPanel());
    frame.pack();
    frame.setVisible(true);

    }
}
这是我的小组课:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.event.InputMethodListener;
import java.util.Scanner;
import java.text.NumberFormat;

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

public class ConverterPanel extends JPanel {
    private JLabel[] binary;
    private JLabel decimal;
    private JLabel inputLabel, outputLabel, resultLabel, totalLabel, totalLabel2;
    private JButton BinaryConvert, DecimalConvert;
    private JTextField hexString;
    private Font convertFont;
    private double total;


    //-------------------------------------------------------------
    // Main GUI
    //-------------------------------------------------------------

    public ConverterPanel() {

        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(400,300));

        hexString =  new JTextField();
        //hexadecimal.addActionListener(new ConvertListener());
        add(hexString);


        JLabel converterName = new JLabel ("Hexadecimal Converter");
        JPanel panelName = new JPanel();
        panelName.add(converterName);
        add(panelName, BorderLayout.NORTH);

        JPanel totalPanel = new JPanel();
        totalPanel.add(new JLabel ("Binary"));
        totalLabel = new JLabel ("------");
        totalPanel.add(totalLabel);
        add(totalPanel, BorderLayout.SOUTH);

        JPanel totalPanel2 = new JPanel();
        totalPanel2.add(new JLabel ("Decimal"));
        totalLabel2 = new JLabel ("------");
        totalPanel2.add(totalLabel);
        add(totalPanel2, BorderLayout.EAST);


    }

    // -------------------------------------------------------------
    // Equation  for Binary Conversion
    //--------------------------------------------------------------

    public void binaryConversion (double binary){

        try {
             Integer b = Integer.valueOf(hexString,16);
             Integer.toBinaryString(b);
           } catch (NumberFormatException ee) {
             ee.printStackTrace();
           }

    }

    // Equation for decimal conversion.

    public void decimalConversion (double decimal){

        String decimal = decimal.getText();
         try {
             Integer c = Integer.valueOf(hexString,16);
             Integer.parseInt(hexString, 16);
           } catch (NumberFormatException ee) {
             ee.printStackTrace();
           }



        //Integer c = Integer.valueOf("444", 16);
        //Integer.parseInt("444",16);
    }



}
我一直在底部试验这些方法。我一直在努力创建它们,没有任何错误。我还尝试对JTextField使用getText()方法。我觉得我可以接近这一点,但我创建这些将十六进制转换为二进制,以及将二进制转换为十进制的方法的逻辑有些“错误”。我知道标准编辑器中的代码。这对我来说在编辑器中是有意义的,因为你所做的只是结果中的system.out.println。它正在将其翻译为GUI,这会导致一些问题

任何帮助都将不胜感激。我意识到这篇文章很长。我只是不确定我的错误在哪里。它可能在panel类的开头,也可能就在末尾,所以我认为发布整个代码将有助于识别问题。如果你能给我任何指导,我将不胜感激。我至少在正确的轨道上吗?我一直在努力得到这个。谢谢

编辑:

好的,我刚刚在JGrasp中运行了它,这些是我得到的错误。它在eclipsetho中运行

Exception in thread "main" java.lang.NoClassDefFoundError: ConverterPanel
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getMethod0(Class.java:2774)
    at java.lang.Class.getMethod(Class.java:1663)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: ConverterPanel
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 6 more
对于编译器错误; 您的方法
binaryConversion
有一个参数
double decimal
,它将隐藏名为decimal的
JLabel
。这意味着您实际上是在
double
上调用
getText()
。您还定义了名为decimal的字符串,这进一步混淆了编译器。 请尝试以下方法:

public void decimalConversion(double d) {

    String s = decimal.getText();
    try {
        Integer c = Integer.valueOf(s);
    } catch (NumberFormatException ee) {
        ee.printStackTrace();
    }
}
小数转换中
Integer.valueOf(hexString,16)
应该是
Integer.valueOf(hexString.getText(),16)


这里有一种方法可以让你做到这一点。通过这种方式,您可以输入文本并按enter键,文本将转换为十进制和二进制,并显示在标签上:

public class ConverterPanel extends JPanel {
    private JLabel binaryLabel = new JLabel();
    private JLabel decimalLabel = new JLabel();
    private JTextField  hexString = new JTextField();
    // omitted some variables

    public ConverterPanel() {

        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(400, 300));
        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        JLabel converterName = new JLabel("Hexadecimal Converter");
        hexString.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                convertInput();
            }
        });

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


        JPanel totalPanel = new JPanel(new GridLayout(1,3));
        totalPanel.add(new JLabel("Binary"));
        totalLabel = new JLabel("------");
        totalPanel.add(totalLabel);
        totalPanel.add(binaryLabel);

        JPanel totalPanel2 = new JPanel(new GridLayout(1,3));
        totalPanel2.add(new JLabel("Decimal"));
        totalLabel2 = new JLabel("------");
        totalPanel2.add(totalLabel2);
        totalPanel2.add(decimalLabel);

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

    }        

    private void convertInput() {

        try {
            Integer n = Integer.valueOf(hexString.getText(), 16);
            decimalLabel.setText(String.valueOf(n));
            binaryLabel.setText(Integer.toBinaryString(n));
        } catch (NumberFormatException ee) {
            ee.printStackTrace();
        }
    }
}

下面是一个将文本从十六进制转换为整数和二进制的示例:

public class Test {
    public static void main(String[] args) {
        String string = "A3";
        int parseInt = Integer.parseInt(string, 16);
        System.out.println(parseInt);
        System.out.println(Integer.toBinaryString(parseInt));
    }
}
输出:

163
10100011
对于编译器错误; 您的方法
binaryConversion
有一个参数
double decimal
,它将隐藏名为decimal的
JLabel
。这意味着您实际上是在
double
上调用
getText()
。您还定义了名为decimal的字符串,这进一步混淆了编译器。 请尝试以下方法:

public void decimalConversion(double d) {

    String s = decimal.getText();
    try {
        Integer c = Integer.valueOf(s);
    } catch (NumberFormatException ee) {
        ee.printStackTrace();
    }
}
小数转换中
Integer.valueOf(hexString,16)
应该是
Integer.valueOf(hexString.getText(),16)


这里有一种方法可以让你做到这一点。通过这种方式,您可以输入文本并按enter键,文本将转换为十进制和二进制,并显示在标签上:

public class ConverterPanel extends JPanel {
    private JLabel binaryLabel = new JLabel();
    private JLabel decimalLabel = new JLabel();
    private JTextField  hexString = new JTextField();
    // omitted some variables

    public ConverterPanel() {

        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(400, 300));
        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        JLabel converterName = new JLabel("Hexadecimal Converter");
        hexString.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                convertInput();
            }
        });

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


        JPanel totalPanel = new JPanel(new GridLayout(1,3));
        totalPanel.add(new JLabel("Binary"));
        totalLabel = new JLabel("------");
        totalPanel.add(totalLabel);
        totalPanel.add(binaryLabel);

        JPanel totalPanel2 = new JPanel(new GridLayout(1,3));
        totalPanel2.add(new JLabel("Decimal"));
        totalLabel2 = new JLabel("------");
        totalPanel2.add(totalLabel2);
        totalPanel2.add(decimalLabel);

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

    }        

    private void convertInput() {

        try {
            Integer n = Integer.valueOf(hexString.getText(), 16);
            decimalLabel.setText(String.valueOf(n));
            binaryLabel.setText(Integer.toBinaryString(n));
        } catch (NumberFormatException ee) {
            ee.printStackTrace();
        }
    }
}

下面是一个将文本从十六进制转换为整数和二进制的示例:

public class Test {
    public static void main(String[] args) {
        String string = "A3";
        int parseInt = Integer.parseInt(string, 16);
        System.out.println(parseInt);
        System.out.println(Integer.toBinaryString(parseInt));
    }
}
输出:

163
10100011

您好,我在您的代码中发现了几个错误

一,-

首先,当您试图转换Textfield时,它应该是字符串,您必须首先使用方法
.getText()

2.其次,您试图为已声明为方法参数的变量赋值,因此您应该更改方法变量的名称

public void decimalConversion(double decimal) {

        String decimal2 = String.valueOf(decimal);
        try {
            Integer c = Integer.valueOf(hexString.getText(), 16);
            Integer.parseInt(hexString.getText(), 16);
        } catch (NumberFormatException ee) {
            System.out.println(ee.getMessage());
        } 
    }
在该方法中,检查点1也是如此

三,-


第三项,未找到导致转换的事件,您应该为每个转换添加一个按钮并分配一个actionPerformed事件。

您好,我在代码中发现了几个错误

一,-

首先,当您试图转换Textfield时,它应该是字符串,您必须首先使用方法
.getText()

2.其次,您试图为已声明为方法参数的变量赋值,因此您应该更改方法变量的名称

public void decimalConversion(double decimal) {

        String decimal2 = String.valueOf(decimal);
        try {
            Integer c = Integer.valueOf(hexString.getText(), 16);
            Integer.parseInt(hexString.getText(), 16);
        } catch (NumberFormatException ee) {
            System.out.println(ee.getMessage());
        } 
    }
在该方法中,检查点1也是如此

三,-


第三项,未找到导致转换的事件,您应该为每个转换添加一个按钮,并分配一个actionPerformed事件。

如果您不断收到错误,请向我们显示这些错误。还请阅读它们,因为java错误通常会告诉您什么是错误的=)我使用eclipse,在编译之前可以看到错误,因为它以红色突出显示它们。对于十进制转换尝试,“decimal”高亮显示为红色,“getText”高亮显示为红色,“valueOf”高亮显示为红色,“parseInt”高亮显示为红色。对于我的二进制转换尝试,只有“valueOf”高亮显示为红色。我现在将尝试编译,看看它会给我@Mike带来什么样的错误。六羟甲基三聚氰胺六甲醚。。。我只是试着编译,但没有给我一个错误。它显示了我到目前为止使用的GUI。但是,我知道实际的逻辑是错误的,因为它突出显示为红色。Eclipse还有一个控制台,它将为您提供错误文本。如果您还没有看到这个,请确保打开它,然后读取javac错误输出@mike。出于某种原因,它没有在控制台中显示错误。但是我确实在“问题”部分看到了一些东西,这里有一个描述资源路径位置类型Integer类型中的方法valueOf(String,int)不适用于参数(JTextField,int)ConverterPanel.java第89行java问题如果您不断出现错误,请向我们展示这些错误。还请阅读它们,因为java错误通常会告诉您什么是错误的=)我使用eclipse,在编译之前可以看到错误,因为它以红色突出显示它们。对于十进制转换尝试,“decimal”高亮显示为红色,“getText”高亮显示为红色,“valueOf”高亮显示为红色,“parseInt”高亮显示为高电平