Hallo,
wie genau stelle ich denn einen JPanel-Inhalt neu dar?
Eigentlich hätte ich das über eine der Zeilen 102-104 des StromkreisApplet erreichen wollen, aber es klappt nicht.
Das funktioniert bei der Darstellung der Grafik im oberen Teil des JSplitPanels, nicht aber im unteren, in dem sich die Eingabeelemente befinden.
Ziel: Wenn der Button "Parallelschaltung einbauen" geklickt wird, soll eben nicht nur die Grafik mit der Parallelschaltung dargestellt, sondern gleichzeitig auch unten noch der Eingabedialog für die Daten der Parallelschaltung ergänzt werden.
Hier der Code:
StromkreisApplet.java:
Stromkreis.java:
Gruß Michi
wie genau stelle ich denn einen JPanel-Inhalt neu dar?
Eigentlich hätte ich das über eine der Zeilen 102-104 des StromkreisApplet erreichen wollen, aber es klappt nicht.
Das funktioniert bei der Darstellung der Grafik im oberen Teil des JSplitPanels, nicht aber im unteren, in dem sich die Eingabeelemente befinden.
Ziel: Wenn der Button "Parallelschaltung einbauen" geklickt wird, soll eben nicht nur die Grafik mit der Parallelschaltung dargestellt, sondern gleichzeitig auch unten noch der Eingabedialog für die Daten der Parallelschaltung ergänzt werden.
Hier der Code:
StromkreisApplet.java:
Code:
import javax.swing.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.imageio.ImageIO;
public class StromkreisApplet extends JApplet implements ActionListener
{
Image MyImage;
Canvas Grafik;
JButton StromstaerkeButton,
StromstaerkeButton_parallel_I1,
SpannungButton,
SpannungButton_parallel,
WiderstandButton,
WiderstandButton_parallel,
SchalterButton,
parallelSchaltungEinbauButton,
seriellSchaltungZusatzbirneEinbauButton;
TextField StromstaerkeEingabe,
StromstaerkeEingabe_parallel_I1,
SpannungEingabe,
SpannungEingabe_parallel,
WiderstandEingabe,
WiderstandEingabe_parallel;
JPanel BasisPanel,
EingabePanel,
EingabePanel4,
EingabePanel5,
EingabePanel6;
ImageIcon StromkreisGrafik;
URL leitergrafik_nur_seriell_und_geschlossen = StromkreisApplet.class.getResource( "leitergrafik_nur_seriell_und_geschlossen.bmp" );
URL leitergrafik_nur_seriell_und_offen = StromkreisApplet.class.getResource( "leitergrafik_nur_seriell_und_offen.bmp" );
URL leitergrafik_parallel_und_geschlossen = StromkreisApplet.class.getResource( "leitergrafik_parallel_und_geschlossen.bmp" );
URL leitergrafik_parallel_und_offen = StromkreisApplet.class.getResource( "leitergrafik_parallel_und_offen.bmp" );
public void actionPerformed ( ActionEvent e )
{
if ( e.getSource () == StromstaerkeButton )
{
Stromkreis.setze_I ( new Float ( StromstaerkeEingabe.getText() ).floatValue() );
SpannungEingabe.setText ( new Float ( Stromkreis.lies_U() ).toString() );
}
if ( e.getSource () == SpannungButton )
{
Stromkreis.setze_U ( new Float ( SpannungEingabe.getText() ).floatValue() );
StromstaerkeEingabe.setText ( new Float ( Stromkreis.lies_I() ).toString() );
}
if ( e.getSource () == WiderstandButton )
{
Stromkreis.setze_R ( new Float ( WiderstandEingabe.getText() ).floatValue() );
StromstaerkeEingabe.setText ( new Float ( Stromkreis.lies_I() ).toString() );
}
if ( e.getSource () == SchalterButton )
{
try
{
if ( Stromkreis.geschlossener_Zustand() == true )
{
SchalterButton.setText ( "<html>Stromkreis
schlie&en</html>" );
if ( Stromkreis.parallelSchaltung_eingebaut() == false )
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_nur_seriell_und_offen ) );
}
else
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_parallel_und_offen ) );
}
}
else
{
SchalterButton.setText ( "<html>Stromkreis
&ffnen</html>" );
if ( Stromkreis.parallelSchaltung_eingebaut() == false )
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_nur_seriell_und_geschlossen ) );
}
else
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_parallel_und_geschlossen ) );
}
}
Stromkreis.Hauptteil_Zustand_in_Gegenteil_versetzen();
this.validate(); // alles mal neu zeichnen...
BasisPanel.updateUI();
EingabePanel.updateUI();
}
catch ( Exception ex )
{
}
}
if ( e.getSource () == parallelSchaltungEinbauButton )
{
try
{
if ( Stromkreis.parallelSchaltung_eingebaut() == true )
{
parallelSchaltungEinbauButton.setText ( "<html>Parallelschaltung
einbauen</html>" );
if ( Stromkreis.geschlossener_Zustand() == true )
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_nur_seriell_und_geschlossen ) );
}
else
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_nur_seriell_und_offen ) );
}
}
else
{
parallelSchaltungEinbauButton.setText ( "<html>Parallelschaltung
ausbauen</html>" );
if ( Stromkreis.geschlossener_Zustand() == true )
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_parallel_und_geschlossen ) );
}
else
{
StromkreisGrafik.setImage( ImageIO.read ( leitergrafik_parallel_und_offen ) );
}
}
Stromkreis.parallel_Schaltung_Einbauzustand_in_Gegenteil_versetzen();
//Stromkreis.parallel_Schaltung_eingebaut = false;
this.validate(); // alles mal neu zeichnen...
BasisPanel.updateUI();
}
catch ( Exception ex )
{
System.out.println ( ex );
}
}
}
public void init()
{
setSize ( new Dimension ( 870, 480));
try
{
setLayout(new BorderLayout () );
Container contentPane = getContentPane();
BasisPanel = new JPanel();
add ( BasisPanel, BorderLayout.CENTER );
//__________________________________________________________
JPanel EingabePanel1_seriell = new JPanel();
EingabePanel1_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label StromstaerkeLabel = new Label ( "Stromstärke I:" );
EingabePanel1_seriell.add ( StromstaerkeLabel );
StromstaerkeEingabe = new TextField ( 3 );
StromstaerkeEingabe.setText ( new Float ( Stromkreis.lies_I() ).toString() );
EingabePanel1_seriell.add ( StromstaerkeEingabe );
Label StromEinheitLabel = new Label ( " A " );
EingabePanel1_seriell.add ( StromEinheitLabel );
StromstaerkeButton = new JButton ("setze Stromstärke");
EingabePanel1_seriell.add ( StromstaerkeButton );
StromstaerkeButton.addActionListener ( this );
//__________________________________________________________
JPanel EingabePanel2_seriell = new JPanel();
EingabePanel2_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label SpannungLabel = new Label ( "Spannung U:" );
EingabePanel2_seriell.add ( SpannungLabel );
SpannungEingabe = new TextField ( 3 );
EingabePanel2_seriell.add ( SpannungEingabe );
SpannungEingabe.setText ( new Float ( Stromkreis.lies_U() ).toString() );
Label SpannungEinheitLabel = new Label ( " V " );
EingabePanel2_seriell.add ( SpannungEinheitLabel );
SpannungButton = new JButton ("setze Spannung");
EingabePanel2_seriell.add ( SpannungButton );
SpannungButton.addActionListener ( this );
//__________________________________________________________
JPanel EingabePanel3_seriell = new JPanel();
EingabePanel3_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label WiderstandLabel = new Label ( "Widerstand R:" );
EingabePanel3_seriell.add ( WiderstandLabel );
WiderstandEingabe = new TextField ( 3 );
EingabePanel3_seriell.add ( WiderstandEingabe );
WiderstandEingabe.setText ( new Float ( Stromkreis.lies_R() ).toString() );
Label WiderstandEinheitLabel = new Label ( " Ohm " );
EingabePanel3_seriell.add ( WiderstandEinheitLabel );
WiderstandButton = new JButton ("setze Widerstand");
EingabePanel3_seriell.add ( WiderstandButton );
WiderstandButton.addActionListener ( this );
//__________________________________________________________
EingabePanel = new JPanel();
EingabePanel.setLayout ( new FlowLayout () );
JPanel EingabePanel_seriell = new JPanel();
EingabePanel_seriell.setLayout ( new BoxLayout ( EingabePanel_seriell,
BoxLayout.Y_AXIS ) );
EingabePanel_seriell.add ( EingabePanel1_seriell );
EingabePanel_seriell.add ( EingabePanel2_seriell );
EingabePanel_seriell.add ( EingabePanel3_seriell );
EingabePanel.add ( EingabePanel_seriell );
if ( Stromkreis.parallelSchaltung_eingebaut() == true )/*||
( Stromkreis.parallelSchaltung_eingebaut() == false ) )*/
{
JPanel EingabePanel1_parallel = new JPanel();
EingabePanel1_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label StromstaerkeLabel_parallel_I1 = new Label ( "Stromstärke I:" );
EingabePanel1_seriell.add ( StromstaerkeLabel_parallel_I1 );
StromstaerkeEingabe_parallel_I1 = new TextField ( 3 );
StromstaerkeEingabe.setText ( new Float ( Stromkreis.lies_I() ).toString() );
EingabePanel1_seriell.add ( StromstaerkeEingabe_parallel_I1 );
Label StromEinheitLabel_parallel_I1 = new Label ( " A " );
EingabePanel1_seriell.add ( StromEinheitLabel_parallel_I1 );
StromstaerkeButton_parallel_I1 = new JButton ("setze Stromstärke");
EingabePanel1_seriell.add ( StromstaerkeButton_parallel_I1 );
StromstaerkeButton.addActionListener ( this );
//__________________________________________________________
JPanel EingabePanel2_parallel = new JPanel();
EingabePanel2_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label SpannungLabel_parallel = new Label ( "Spannung U:" );
EingabePanel2_seriell.add ( SpannungLabel_parallel );
SpannungEingabe_parallel = new TextField ( 3 );
EingabePanel2_seriell.add ( SpannungEingabe_parallel );
SpannungEingabe_parallel.setText ( new Float ( Stromkreis.lies_U() ).toString() );
Label SpannungEinheitLabel_parallel = new Label ( " V " );
EingabePanel2_seriell.add ( SpannungEinheitLabel_parallel );
SpannungButton_parallel = new JButton ("setze Spannung");
EingabePanel2_seriell.add ( SpannungButton_parallel );
SpannungButton_parallel.addActionListener ( this );
//__________________________________________________________
JPanel EingabePanel3_parallel = new JPanel();
EingabePanel3_seriell.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
Label WiderstandLabel_parallel = new Label ( "Widerstand R:" );
EingabePanel3_seriell.add ( WiderstandLabel );
WiderstandEingabe_parallel = new TextField ( 3 );
EingabePanel3_seriell.add ( WiderstandEingabe_parallel );
WiderstandEingabe_parallel.setText ( new Float ( Stromkreis.lies_R() ).toString() );
Label WiderstandEinheitLabel_parallel = new Label ( " Ohm " );
EingabePanel3_seriell.add ( WiderstandEinheitLabel );
WiderstandButton_parallel = new JButton ("setze Widerstand");
EingabePanel3_seriell.add ( WiderstandButton_parallel );
WiderstandButton_parallel.addActionListener ( this );
JPanel EingabePanel_parallel = new JPanel();
EingabePanel_parallel.setLayout ( new BoxLayout ( EingabePanel_parallel,
BoxLayout.Y_AXIS ) );
EingabePanel_parallel.add ( EingabePanel1_parallel );
EingabePanel_parallel.add ( EingabePanel2_parallel );
EingabePanel_parallel.add ( EingabePanel3_parallel );
EingabePanel.add ( EingabePanel_parallel );
}
EingabePanel4 = new JPanel();
EingabePanel4.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
SchalterButton = new JButton ("<html>Stromkreis
&ffnen</html>");
SchalterButton.addActionListener ( this );
EingabePanel4.add ( SchalterButton );
add ( SchalterButton/*EingabePanel4*/, BorderLayout.WEST );
EingabePanel5 = new JPanel();
EingabePanel5.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
parallelSchaltungEinbauButton = new JButton ("<html>Parallelschaltung
einbauen</html>");
parallelSchaltungEinbauButton.addActionListener ( this );
EingabePanel5.add ( parallelSchaltungEinbauButton );
add ( parallelSchaltungEinbauButton, BorderLayout.EAST );
EingabePanel6 = new JPanel();
EingabePanel6.setLayout ( new FlowLayout ( FlowLayout.LEFT, 0, 0 ) );
seriellSchaltungZusatzbirneEinbauButton = new JButton ("<html>Zusatzbirne in Seriellschaltung einbauen</html>");
seriellSchaltungZusatzbirneEinbauButton.addActionListener ( this );
EingabePanel6.add ( seriellSchaltungZusatzbirneEinbauButton );
add ( seriellSchaltungZusatzbirneEinbauButton, BorderLayout.NORTH );
StromkreisGrafik = new ImageIcon ( ImageIO.read ( leitergrafik_nur_seriell_und_geschlossen ) );
JSplitPane splitPane = new JSplitPane
(
JSplitPane.VERTICAL_SPLIT,
new JLabel ( StromkreisGrafik ),
EingabePanel
);
splitPane.setOneTouchExpandable ( true );
BasisPanel.add(splitPane);
this.setVisible ( true );
}
catch ( Exception e )
{
}
}
}
Stromkreis.java:
Code:
import javax.swing.JButton;
public class Stromkreis
{
private static boolean geschlossen = true;
public static boolean parallel_Schaltung_eingebaut = false;
private static float I = 0.25f;
private static float U = 12;
private static float R = U / I;
public static float lies_I()
{
return I;
}
public static float lies_U()
{
return U;
}
public static float lies_R()
{
return R;
}
public static void setze_I ( float I )
{
Stromkreis.I = I;
Stromkreis.U = Stromkreis.R / Stromkreis.I;
//berechne_U();
}
public static void setze_U ( float U )
{
Stromkreis.U = U;
Stromkreis.I = Stromkreis.R / Stromkreis.U;
//berechne_I();
}
public static void setze_R ( float R )
{
Stromkreis.R = R;
Stromkreis.I = Stromkreis.U / Stromkreis.R;
//berechne_I();
}
private static void berechne_I ()
{
Stromkreis.I = Stromkreis.U / Stromkreis.R;
}
private static void berechne_U ()
{
//Stromkreis.U = 3;
Stromkreis.U = Stromkreis.R * Stromkreis.I;
}
private static void berechne_R ()
{
Stromkreis.R = Stromkreis.U / Stromkreis.I;
}
public static boolean geschlossener_Zustand ()
{
return Stromkreis.geschlossen;
}
public static void Hauptteil_Zustand_in_Gegenteil_versetzen ()
{
if ( Stromkreis.geschlossen == true )
{
Stromkreis.geschlossen = false;
}
else
{
Stromkreis.geschlossen = true;
}
}
private void Hauptteil_schliessen ()
{
geschlossen = true;
}
public static boolean parallelSchaltung_eingebaut()
{
return Stromkreis.parallel_Schaltung_eingebaut;
}
public static void parallel_Schaltung_Einbauzustand_in_Gegenteil_versetzen()
{
if ( Stromkreis.parallel_Schaltung_eingebaut == true )
{
Stromkreis.parallel_Schaltung_eingebaut = false;
}
else
{
Stromkreis.parallel_Schaltung_eingebaut = true;
}
}
}
Gruß Michi