【发布时间】:2014-01-07 00:40:45
【问题描述】:
我正在尝试为此制作一个 GUI。基本上,您按下一个按钮,然后将十六进制转换为二进制和十进制。我觉得我正在接近我的代码。到目前为止,我创建了一个驱动器类和一个面板类。我试图在我的面板类中创建将十六进制转换为二进制和十六进制转换为十进制的方法。我不断收到错误,我不知道为什么。我一直在关注我的其他代码,但我一直在努力将这些方法放在面板类的底部。我会向你展示我目前的课程。
驱动类:
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 进行翻译。
任何帮助将不胜感激。我意识到这篇文章很长。我只是不确定我的错误在哪里。它可能在面板类的开头,或者就在结尾,所以我认为发布整个代码将有助于识别问题。我很感激你能给我的任何指导。我至少在正确的轨道上吗?我一直在努力得到这个。谢谢。
编辑:
好的,我刚刚在 JGrasp 中运行它,这些是我遇到的错误。它在 Eclipse 中运行。
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
【问题讨论】:
-
如果您不断收到错误,请告诉我们这些错误。还要阅读它们,因为 java 错误通常会告诉你出了什么问题 =)
-
好吧,我使用 eclipse,我可以在编译之前看到错误,因为它以红色突出显示它们。对于十进制转换尝试,“十进制以红色突出显示,“getText”以红色突出显示,“valueOf”以红色突出显示,“parseInt”以红色突出显示。对于我的二进制转换尝试,只有“valueOf”以红色突出显示。我现在尝试编译,看看它会给我什么样的错误
-
@迈克。嗯...我刚刚尝试编译,但它没有给我一个错误。它显示了我到目前为止的 GUI。但是,我知道实际的逻辑是错误的,因为它以红色突出显示。
-
Eclipse 也有一个控制台,可以为您提供错误文本。如果您还没有查看,请确保将其打开,然后阅读 javac 错误输出
-
@麦克。出于某种原因,它没有在控制台中显示错误。但是我确实在“问题”部分看到了一些东西这是一个描述资源路径位置类型Integer类型中的方法valueOf(String,int)不适用于参数(JTextField,int)ConverterPanel.java第89行Java问题跨度>
标签: java swing binary hex converter