Hi,
also ich hab da mal folgende Frage:
Wann ist ein Programm beendet?
Bisher dachte ich wenn die main beendet ist aber bei dem Beispiel:
da wird doch die main aufgerufen und darin den Konstruktor! Aber es werden auch noch Events ausgeführt wenn der Konstruktor abgearbeitet ist! Warum? Ist dann das Programm nicht zuende? Wann wird generell ein Programm beendet? Beim Thread ist das doch wenn die run(); Methode abgearbeitet ist, oder? Oder bei normalen Programmen wenn die main abgearbeitet ist, oder? Und mit System.exit(0); kann man vorzeitig beenden?
Gruß Michi
also ich hab da mal folgende Frage:
Wann ist ein Programm beendet?
Bisher dachte ich wenn die main beendet ist aber bei dem Beispiel:
Code:
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;
public class comframe extends Frame{
static CommPortIdentifier portID;
InputStream ins;
OutputStream out;
static SerialPort serss;
TextArea ausgabe;
TextField tfe;
Button bt;
public static void main(String[] args){
try{portID = CommPortIdentifier.getPortIdentifier("COM2");
serss = (SerialPort) portID.open("mein_programm",2000);
comframe f = new comframe();
f.setSize(330,250);
f.show();
}
catch(Exception exc){System.out.println("Fehler :"+exc);}
}
public comframe() {
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
setLayout(new FlowLayout());
add(tfe=new TextField(40));
tfe.addActionListener(new sendeListener());
add(bt=new Button("Senden"));
bt.addActionListener(new sendeListener());
add(ausgabe=new TextArea("Port COM2 geöffnet\n",7,40));
try {ins = serss.getInputStream();
out = serss.getOutputStream();
serss.addEventListener(new commListener());
}
catch (Exception e) { System.out.println("Fehler: "+e);}
serss.notifyOnDataAvailable(true);
try {serss.setSerialPortParams(2400,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1 ,
SerialPort.PARITY_NONE);}
catch (UnsupportedCommOperationException e) {}
}
public class sendeListener implements ActionListener{
public void actionPerformed(ActionEvent e){
PrintWriter aus = new PrintWriter(out);
aus.println(tfe.getText());
aus.flush();
aus.close();
}
}
public class commListener implements SerialPortEventListener{
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
byte[] readBuffer = new byte[20];
try {
while (ins.available() > 0) {int numBytes = ins.read(readBuffer);}
String nachricht = new String(readBuffer);
ausgabe.append(nachricht);
}
catch (IOException e) {System.out.println("Fehler: "+e);}
}
}
}
}
da wird doch die main aufgerufen und darin den Konstruktor! Aber es werden auch noch Events ausgeführt wenn der Konstruktor abgearbeitet ist! Warum? Ist dann das Programm nicht zuende? Wann wird generell ein Programm beendet? Beim Thread ist das doch wenn die run(); Methode abgearbeitet ist, oder? Oder bei normalen Programmen wenn die main abgearbeitet ist, oder? Und mit System.exit(0); kann man vorzeitig beenden?
Gruß Michi