я делаю программу это конвертер единиц используя 3 combox, изогнутый главный, что он считает меню: Длина, температура, частота и давление и 2 другие combox берутся за то, чтобы конвертировать единицы используя 2 ящика текстов, я правда не с q событие могу работать для 2 combox, заранее благодарен много человеку или люди q я сотрудничал в этом это программа: ***
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Conversor extends JFrame {
public JPanel panel;
private JLabel enunciado, enlazado;
private JTextField conv1, conv2;
private JComboBox Lista1, Lista2, Lista3;
private JButton clear;
//constructor
public Conversor() {
super("Conversor Unidades");
setBounds(100, 200, 290, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Panel();
Enunciado();
CajaTexto();
boton();
objetosCombox();
lista3();
}
private void Panel() {
panel = new JPanel();
this.getContentPane().add(panel);
panel.setLayout(null);
}
private void Enunciado() {
enunciado = new JLabel("Este es un software para convertir unidades.");
panel.add(enunciado);
enunciado.setBounds(10, 2, 300, 35);
enunciado.setFont(new Font("arial", Font.BOLD, 12));
enlazado = new JLabel("=");
panel.add(enlazado);
enlazado.setBounds(125, 80, 100, 25);
enlazado.setFont(new Font("arial", Font.BOLD, 20));
}
private void CajaTexto() {
//caja de texto 1
conv1 = new JTextField();
panel.add(conv1);
conv1.setBounds(10, 80, 110, 25);
//caja de texto 2
conv2 = new JTextField();
panel.add(conv2);
conv2.setBounds(140, 80, 110, 25);
}
//funciones de los combox
private void objetosCombox() {
Lista3 = new JComboBox();
Lista1 = new JComboBox();
Lista2 = new JComboBox();
Lista3.setBounds(10, 40, 240, 30);
Lista1.setBounds(10, 120, 110, 25);
Lista2.setBounds(140, 120, 110, 25);
panel.add(Lista3);
panel.add(Lista1);
panel.add(Lista2);
Lista3.addItemListener(new menu3());
Lista1.addItemListener(new evento1());
Lista2.addItemListener(new evento1());
}
private void lista3() {
Lista3.addItem("Longitud");
Lista3.addItem("Temperatura");
Lista3.addItem("Frecuencia");
Lista3.addItem("Presion");
}
private class menu3 implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
rellenaCombo1((String) Lista3.getSelectedItem());
}
}
private void rellenaCombo1(String SeleccionCombo1) {
Lista1.removeAllItems();
Lista2.removeAllItems();
if (SeleccionCombo1.equals("Longitud")) {
Lista1.addItem("Km");
Lista1.addItem("m");
Lista1.addItem("Cm");
Lista1.addItem("Pulgada");
Lista1.addItem("Millas");
//menu 2
Lista2.addItem("Km");
Lista2.addItem("m");
Lista2.addItem("Cm");
Lista2.addItem("Pulgada");
Lista2.addItem("Millas");
}
if (SeleccionCombo1.equals("Temperatura")) {
Lista1.addItem("Grados Celsius");
Lista1.addItem("Grados Fahrenheit");
Lista1.addItem("Grados Kelvin");
// menu 2
Lista2.addItem("Grados Celsius");
Lista2.addItem("Grados Fahrenheit");
Lista2.addItem("Grados Kelvin");
}
if (SeleccionCombo1.equals("Frecuencia")) {
Lista1.addItem("Herz");
Lista1.addItem("KiloHerz");
Lista1.addItem("MegaHerz");
Lista1.addItem("GigaHerz");
//menu 2
Lista2.addItem("Herz");
Lista2.addItem("KiloHerz");
Lista2.addItem("MegaHerz");
Lista2.addItem("GigaHerz");
}
if (SeleccionCombo1.equals("Presion")) {
Lista1.addItem("Atmosfera");
Lista1.addItem("Bar");
Lista1.addItem("Psi");
Lista1.addItem("Pascal");
Lista1.addItem("Tor");
// menu 2
Lista2.addItem("Atmosfera");
Lista2.addItem("Bar");
Lista2.addItem("Psi");
Lista2.addItem("Pascal");
Lista2.addItem("Tor");
}
}
private class evento1 implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
String longitud = (String) Lista3.getSelectedItem().toString();
if (longitud.equals("Longitud")) {
String magnitud = (String) Lista1.getSelectedItem().toString();
if (magnitud.equals("Km")) {
int num1 = Integer.parseInt(conv1.getText());
String magnitud1 = (String)Lista2.getSelectedItem().toString();
if (magnitud1.equals("Km")) {
JOptionPane.showMessageDialog(null, "Error no se puede convertir de Km a Km");
}
}
}
}
}
}
private void boton() {
clear = new JButton("Clear");
panel.add(clear);
clear.setBounds(85, 160, 80, 25);
clear.addActionListener(new clear7());
}
class clear7 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == clear) {
conv1.setText("");
conv2.setText("");
}
}
}
}
Это ошибка:
Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:592) at java.lang.Integer.parseInt(Integer.java:615) at Conversor7.Conversor$evento1.itemStateChanged(Conversor.java:158) at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1223) at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1280) at javax.swing.JComboBox.contentsChanged(JComboBox.java:1330) at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118) at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93) at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:131) at javax.swing.JComboBox.addItem(JComboBox.java:716) at Conversor7.Conversor.rellenaCombo1(Conversor.java:100) at Conversor7.Conversor.access$300(Conversor.java:16) at Conversor7.Conversor$menu3.itemStateChanged(Conversor.java:92) at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1223) at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1280) at javax.swing.JComboBox.contentsChanged(JComboBox.java:1330) at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118) at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93) at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:131) at javax.swing.JComboBox.addItem(JComboBox.java:716) at Conversor7.Conversor.lista3(Conversor.java:82) at Conversor7.Conversor.<init>(Conversor.java:34) at Conversor7.PrincipalConversor.main(PrincipalConversor.java:4) C:\Users\JORGE\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:
Java returned: 1 BUILD FAILED (общее количество украло: 1 second)
Ошибка
Нумберформатекссептион.форинпутстринг (NumberFormatException.java:65) at java.lang. Integer.parseInt (Integer.java:592) at java.lang. Integer.parseInt (Integer.java:615)
проистекает того, что ты пробуешь конвертировать стоимость не numГ©rico в numГ©rico
Добавляет mГ©todo, что ты servirГЎ, чтобы санкционировать случаи, в которых стоимость, которая находит в JTextField
, названный conv1
, не типа numГ©rico:
public static int checkNumerico(String numero){
int resultado = 0; //Valor predeterminado 0
try{
if(numero != null){
resultado = Integer.parseInt(numero);
}
}catch(NumberFormatException nfe){
System.out.println("Error NumberFormatException value: " + numero);
}
return resultado;
}
из этой формы usarГ-схвати mГ©todo:
//int num1 = Integer.parseInt(conv1.getText());
int num1 = checkNumerico(conv1.getText());
Проверь хорошо то, что говорит твою ошибку, она excepciГіn NumberFormatException
значит, что у цепи есть формат numГ©rico не действительно, после тебе показывает ввод, что recibiГі funciГіn Integer.parseInt()
, которой было ""
, а именно цепь vacГ, - за чем не могут parsear цепь vacГ - в в целое число, я рекомендую тебе, проверь стоимость, которую ты даешь conv1
, так как он это не получает mГ©todo, предотвращать эту ошибку ты можешь проверять сначала, если переменная не была пустой:
private class evento1 implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
String longitud = (String) Lista3.getSelectedItem().toString();
if (longitud.equals("Longitud")) {
String magnitud = (String) Lista1.getSelectedItem().toString();
if (magnitud.equals("Km")) {
//Validacion
if(conv1.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Error elemento vacio");
} else {
int num1 = Integer.parseInt(conv1.getText());
String magnitud1 = (String)Lista2.getSelectedItem().toString();
}
if (magnitud1.equals("Km")) {
JOptionPane.showMessageDialog(null, "Error no se puede convertir de Km a Km");
}
}
}
}
}
}