Salve e buone feste a tutti.
ho fatto la parte grafica di un convertitore binario-decimale-ottale-esadecimale in java ma non riesco a capire come gestire l'input dell'utente nelle varie textbox riguardanti i vari formati numerici: voglio che a ogni cambiamento dell'input, tutti gli altri campi vengano modificati inserendo il valore convertito del campo attuale.
mi spiego meglio: se io inserisco il numero 2 nel textbox decimale, nel binario avrò immediatamente 10, nell'ottale e nell'esadecimale 2, senza che avvenga alcuna pressione di pulsanti, la conversione viene generata dal cambiamento dell'input.
ho provato con keytyped ma appena premo un tasto lancia svariate eccezioni senza nemmeno inserire la cifra nella textbox...
con action performed invece non fa nulla, mi pare di capire che l'input dentro una textbox non vada a chiamare quest'evento.
le eccezioni che mi lancia con keytyped sono queste:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Convertitore$4.keyTyped(Convertitore.java:127)
at java.awt.Component.processKeyEvent(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
i codici dei due eventi sono:
decimalValue.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
//binaryValue.setText(Integer.toString(decToBin(Integer.parseInt(decimalValue.getText()))));
//octalValue.setText(Integer.toString(decToOct(Integer.parseInt(decimalValue.getText()))));
//hexValue.setText(decToHex(Integer.parseInt(decimalValue.getText())));
}
});
binaryValue.addKeyListener(new KeyAdapter()
{
@Override
public void keyTyped(KeyEvent e)
{
decimalValue.setText(Integer.toString(binToDec(Integer.parseInt(binaryValue.getText()))));
//octalValue.setText(Integer.toString(decToOct(Integer.parseInt(decimalValue.getText()))));
//hexValue.setText(decToHex(Integer.parseInt(decimalValue.getText())));
}
});
(perdonate l'indentazione, con il tag code me la rovina tutta)
qualcuno sa aiutarmi?