Hallo trapperjohn,
leider habe ich Deinen Post jetzt ein wenig zu spät gelesen und mich inzwischenzeit ziemlich abgemüht, das Programm zum laufen zu kriegen ( sagt man eigentlich noch Programm zum laufen kriegen, oder eher Klasse zum laufen kriegen?).
Jetzt muss ich erst mal Deine Version genauer unter die Lupe nehmen.
Hier ist meine "Wurstelversion", die ich nicht besonders lesbar finde. Ich habe mich aber an das Buch "Java is auch ein Insel" gehalten. Da gab's eine ähnlich Konstruktion.
Code:
/**
* Einache Java Klasse mit graphischer Oberflaeche
* zur Steuerung eines ASURO-Roboters ueber die IR-Schnittstelle
*
* Funktionen: Leds ein und ausschalten
*
* @author robo.fr ( Nickname ) christoph(at)roboterclub-freiburg.de
*
* March.2008
*
*/
import java.awt.Image;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class AsuroControl extends JFrame implements WindowListener
{
private AsuroKommandos asuro=null;
private static boolean debug=true;
// Hier müssen alle Methoden zur Behandlung der Fenster-Events folgen
public void windowClosing( WindowEvent event )
{
asuro.schnittstelleSchliessen();
System.exit( 0 );
}
public void windowClosed( WindowEvent event ) { /*Empty*/ }
public void windowDeiconified( WindowEvent event ) { /*Empty*/ }
public void windowIconified( WindowEvent event ) { /*Empty*/ }
public void windowActivated( WindowEvent event ) { /*Empty*/ }
public void windowDeactivated( WindowEvent event ) { /*Empty*/ }
public void windowOpened( WindowEvent event ) { /*Empty*/ }
// das ganze Programm befindet sich im Konstruktor
AsuroControl()
{
setSize( 400, 400 );
addWindowListener( this );
asuro=new AsuroKommandos();
JPanel ledSchalterPanel=new JPanel();
JPanel bilder=new JPanel();
Action testAction = new AbstractAction( )
{
public void actionPerformed( ActionEvent e )
{
if(debug&asuro.verbindungOk()) System.out.println("passt");
}
};
Action FrontLedAction = new AbstractAction( "FrontLed" )
{
public void actionPerformed( ActionEvent e )
{
if(debug) System.out.println("FrontLed ein");
asuro.ledsOff(); // Led's aus
asuro.frontLed() ; // frontLed einschalten
}
};
Action BackLedLAction = new AbstractAction( "BackL" )
{
public void actionPerformed( ActionEvent e )
{
if(debug) System.out.println("linke BackLed ein");
asuro.ledsOff(); // Led's aus
asuro.backLedL() ; // backLedL einschalten
}
};
Action BackLedRAction = new AbstractAction( "BackR" )
{
public void actionPerformed( ActionEvent e )
{
if(debug) System.out.println("rechte BackLed ein");
asuro.ledsOff(); // Led's aus
asuro.backLedR() ; // backLedr einschalten
}
};
JButton buttonFrontLed = new JButton(FrontLedAction);
JButton buttonBackLedL = new JButton(BackLedLAction);
JButton buttonBackLedR = new JButton(BackLedRAction);
ledSchalterPanel.add(buttonBackLedL);
ledSchalterPanel.add(buttonFrontLed);
ledSchalterPanel.add(buttonBackLedR);
Icon bild = new ImageIcon(AsuroControl.class.getResource( "/images/asuro.jpg" ) );
JButton buttonAsuroBild = new JButton( bild );
buttonAsuroBild.addActionListener(testAction);
bilder.add( buttonAsuroBild);
this.setLayout( new BorderLayout(5,5) );
this.add(ledSchalterPanel,BorderLayout.PAGE_END);
this.add(bilder,BorderLayout.PAGE_START);
this.setTitle("Java ASURO control");
setVisible( true );
asuro.schnittstelleOeffnen("COM10");
}
public static void main( String[] args )
{
new AsuroControl();
}
}
/***************************************************************************
*
* (c) 2008 robo.fr (Nickname) , christoph(at)roboterclub-freiburg.de
*
***************************************************************************
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation version 2 of the License, *
* If you extend the program please maintain the list of authors. *
* ( if there is no real name, the nick name has to be mentioned )
* If you want to use this software for commercial purposes and you *
* don't want to make it open source, please contact the authors for *
* licensing. *
***************************************************************************/
Morgen werde ich Deine Version mal genauer unter die Lupe nehmen und sehen, wie ich mein Konstrukt verbessern kann.
Gruß,
robo
Lesezeichen