PDA

View Full Version : Ma java è sordo?


FonzieTi4200
10-11-2004, 11:30
...non mi ascolta la tastiera :D

:cry:

Il mio caso è questo: ho una JTextField in cui inserisco una stringa che rappresenta la porta della mia macchina e finchè non inserisco un numero diverso da zero il bottone di connessione (JToggleButton) rimane inattivo. [E questa parte è fatta! ;) ]

Vorrei che dopo essersi attivato il bottone, alla pressione del tasto invio succeda un evento di tipo doClick o comunque che corrisponda allo stato selected cioè che venga premuto il bottone avviando la connessione (fine ultimo del programmino)..

Mi sono già tagliato con i key listener e col setFocus: con quest'ultimo soprattutto perchè non vorrei perdere il focus sulla casella di testo fino a quando non ho finito a scriverci la porta!

:cry: :muro: :mc:

FonzieTi4200
10-11-2004, 15:42
*soffia il vento*

oooh c'è nessuno? :rolleyes:


:cry:

Blackat
10-11-2004, 16:56
Mostra il codice ;)

FonzieTi4200
10-11-2004, 17:23
Originariamente inviato da Blackat
Mostra il codice ;)

Eccolo con alcuni pezzi tolti... quelli che non interessano...

[...]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class ASD
extends JFrame
{
private JLabel txtIp;
private JTextField txtPort;
private JToggleButton tbConn;
private JDialog dialog;
private JToggleButton stop;
private JToggleButton orario;
private JToggleButton antiorario;
[...]
private JLabel status;
private JLabel operation;

public PLCAgentFrame()
{
[...]
JPanel pserver=new JPanel();
pserver.setLayout(new GridLayout(0,3));
/** creazione di due JLabel e una JTextField */
pserver.add(txtIp=new JLabel(""));
pserver.add(new JLabel(" :"));
pserver.add(txtPort=new JTextField(""));
txtPort.setEditable(true);
/** aggiunta dell'ascoltatore al JTextField */
Document document = txtPort.getDocument();
document.addDocumentListener(new TextHandle());
pserver.setBorder(BorderFactory.createEtchedBorder(0));
pinfo.add(BorderLayout.SOUTH,pserver);
/** sub-pannello north-east */
JPanel pconn=new JPanel();
pconn.setLayout(new BorderLayout());
pconn.setBorder(BorderFactory.createEmptyBorder(10,10,10,0));
/** creazione del ToggleButton di connessione */
pconn.add(tbConn=new JToggleButton(new ImageIcon(
"../img/semaforo_rosso.gif"),false));
tbConn.setSelectedIcon(new ImageIcon("../img/semaforo_giallo.gif"));
tbConn.setToolTipText("Start Listening");
tbConn.addItemListener(new JToggleButtonListener());
tbConn.setEnabled(false);
psetup.add(BorderLayout.EAST,pconn);
[...]
}

/** ascoltatore del ToggleButton di connessione */
class JToggleButtonListener
implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
int status=e.getStateChange();
if(status==ItemEvent.SELECTED)
{
/** chiamata al metodo startListen() */
agentePLC.startListen();
txtIp.setEnabled(true);
txtPort.setEnabled(true);
txtPort.setEditable(false);
}
else
{
agentePLC.stopListen();
txtPort.setEditable(true);
}
}
}
[...]
/** ascoltatore della JTextArea txtPort */
class TextHandle implements DocumentListener
{
public void insertUpdate(DocumentEvent event){
String sString = txtPort.getText();
try{
/** settaggio della porta di connessione */
int iValue = Integer.parseInt(sString);
if (iValue != 0){
tbConn.setEnabled(true);
agentePLC.setPort(iValue);
}
}
catch(NumberFormatException nfe){
tbConn.setEnabled(false);
}
}
public void removeUpdate( DocumentEvent event )
{
if( txtPort.getText().length() == 0 ){
tbConn.setEnabled( false );
}
else
{
insertUpdate( event );
}
}
public void changedUpdate( DocumentEvent event )
{

}
}
[...]
}

FonzieTi4200
10-11-2004, 17:37
Ah ci sono molti riferimenti ad un altra classe ma per il mio problema non ce n'è bisogno voglio solo aggiungere il fatto che dopo aver messo del testo nella txtPort e aver premuto invio si prema il bottone tbConn: ora come ora ci devo andare per forza a cliccare col mouse...

:)

FonzieTi4200
16-11-2004, 08:14
Ehm... un'anima pia? :D

FonzieTi4200
17-11-2004, 08:24
Potete cancellare il topic ho risolto:)