Java 图形用户界面二进制到十进制转换器
我试图完成我的程序,它所做的只是不断打开一个新的Java 图形用户界面二进制到十进制转换器,java,swing,jframe,awt,Java,Swing,Jframe,Awt,我试图完成我的程序,它所做的只是不断打开一个新的JFrame。我做错了什么 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class BinaryConverter { public static void main(String[] args) { new BinaryConverter(); } private JFrame frame;
JFrame
。我做错了什么
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class BinaryConverter {
public static void main(String[] args) {
new BinaryConverter();
}
private JFrame frame;
private JButton button;
private JTextField text;
private JTextField text2;
private String decimalnumber = null;
// Constructor - builds and displays the window.
public BinaryConverter() {
frame = new JFrame("Let's Convert!");
// Create JLabel object for "Binary:" and add it to frame.
JLabel label = new JLabel("Binary:");
frame.setLayout(new FlowLayout());
frame.add(label);
// Create JTextField object and add it to frame
text = new JTextField(15);
frame.add(text);
// Create JLabel object for "Decimal:" and add it to frame.
JLabel label2 = new JLabel("Decimal:");
frame.add(label2);
// Create JTextField object and add it to frame
text2 = new JTextField(15);
frame.add(text2);
// Create JButton object and add it to frame.
button = new JButton("Convert");
button.addActionListener(new ButtonListener());
frame.add(button);
// Set frame attributes and make frame visible
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(250, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void Convert() {
String binary = text.getText(); // inserted binary number
int i;
for (i = 0; i < binary.length(); i++) { // The exponent
char select = binary.charAt(binary.length() - i);
char number = (char) (select * Math.pow(2, i));
decimalnumber += number;
}
}
public class ButtonListener implements ActionListener {
// This method is called automatically when button is clicked.
// Every Listener must have this method.
public void actionPerformed(ActionEvent e) {
BinaryConverter c = new BinaryConverter();
c.Convert();
if (button.getText().equals("Convert")) {
text2.setText(decimalnumber);
text.getText();
text2.getText();
} else {
}
}
}
}
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
公共类二进制转换器{
公共静态void main(字符串[]args){
新的二进制转换器();
}
私有JFrame;
私人按钮;
私有JTextField文本;
私有JTextField text2;
私有字符串小数=null;
//构造函数-生成并显示窗口。
公共二进制转换器(){
frame=newjframe(“让我们转换!”);
//为“Binary:”创建JLabel对象并将其添加到框架中。
JLabel标签=新的JLabel(“二进制:”);
frame.setLayout(新的FlowLayout());
框架。添加(标签);
//创建JTextField对象并将其添加到框架中
text=新的JTextField(15);
框架。添加(文本);
//为“Decimal:”创建JLabel对象并将其添加到框架中。
JLabel label2=新的JLabel(“十进制:”);
添加框架(标签2);
//创建JTextField对象并将其添加到框架中
text2=新的JTextField(15);
frame.add(text2);
//创建JButton对象并将其添加到框架中。
按钮=新按钮(“转换”);
addActionListener(new ButtonListener());
框架。添加(按钮);
//设置帧属性并使帧可见
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。设置尺寸(250300);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共void Convert(){
String binary=text.getText();//插入的二进制数
int i;
对于(i=0;i
这将创建(并显示)一个新的二进制转换器实例
// This method is called automatically when button is clicked.
// Every Listener must have this method.
public void actionPerformed(ActionEvent e) {
BinaryConverter c = new BinaryConverter(); //create/show a NEW instance!
c.Convert();
if (button.getText().equals("Convert")) {
text2.setText(decimalnumber);
text.getText();
text2.getText();
} else {
}
}
这就是它显示GUI新实例的原因
因此,请替换:
BinaryConverter c = new BinaryConverter();
c.Convert();
简单地说:
Convert();
public void actionPerformed(ActionEvent e){BinaryConverter c=new BinaryConverter();
这将创建(并显示)一个BinaryConverter
的新实例!我确实使用了调试器,但不幸的是,它没有显示任何内容。提示:添加@ControlAltDel(或其他任何人,@
很重要)通知此人新的注释。线程“AWT-EventQueue-0”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:binaryconverter.binaryconverter.binaryconverter.Convert(binaryconverter.java:56)处的2处的java.lang.String.charAt(String.java:658)处的binaryconverter.binaryconverter$ButtonListener.actionPerformed(BinaryConverter.java:67)不char select=binary.charAt(binary.length()-i);只需说select将连续检查特定字符串,例如,第5行,然后是4、3、2等?我认为这不会对转换方法StringIndexOutOfBoundsException
产生影响。因此,解决了“多个GUI”的原始问题?如果有助于解决问题,请回答。(并就新错误提出新问题。)