Ich bin gerade dabei meine ersten Versuche mit Swing durchzuführen.
Ich möchte in einem Fenster eine JToolBar installieren. Diese wird im BorderLayout im Norden verankert. klappt soweit auch.
Auf Aktion der Buttons in der Toolbar sollen dann im Center-Bereich - je nach Auswahl - unterschiedliche Ein- bzw. Ausgabemasken erscheinen.
Die repaints() sind sicherlich etwas zahlreich verteilt. Das wollte ich dann bereinigen, wenn die Grundfunktionalität steht.
Wenn Zeile 37 nicht auskommentiert ist, kann ich zumindest das Eingabepanel ein- bzw. ausschalten.
Ansonsten findet bei Button-Aktion zwar die Ausführung der Methoden statt ("in add" wird in der Console ausgegeben), aber es wird nichts im Fenster angezeigt.
zunächst eine Verständnisfrage:
Wenn ich im Borderlayout bin, kann ich dort meinetwegen im Centerbereich ein Panel einrichten, das ich dann weiter über das Gridbaglayout mit Funktionen versehe. Richtig oder falsch?
Ist es überhaupt möglich Panels einfach auszutauschen? Der VE con Eclipse bietet dise Möglichkeit nach meiner Meinung z.B. nicht. Falls dem nicht so ist,wäre ich über Denkanstösse dankbar. JTabs und ChildFrames möchte ich nicht unbedingt benutzen.
Vielen Dank schon mal für eure Bemühungen
Ich möchte in einem Fenster eine JToolBar installieren. Diese wird im BorderLayout im Norden verankert. klappt soweit auch.
Auf Aktion der Buttons in der Toolbar sollen dann im Center-Bereich - je nach Auswahl - unterschiedliche Ein- bzw. Ausgabemasken erscheinen.
Die repaints() sind sicherlich etwas zahlreich verteilt. Das wollte ich dann bereinigen, wenn die Grundfunktionalität steht.
Code:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class fenster extends JFrame implements ActionListener
{
private JToolBar myToolBar = new JToolBar();
JButton JButton1 = new JButton("Button1") ;
JButton JButton2 = new JButton("Button2") ;
JButton JButton3 = new JButton ("Button3");
JLabel EingabeLabel = new JLabel ("Labeltext Eingabe");
JLabel AusgabeLabel = new JLabel ("Labeltext Ausgabe");
JPanel EingabePanel = new JPanel();
JPanel AusgabePanel = new JPanel();
public fenster (String textKopfzeile)
{
super (textKopfzeile);
this.setLocation(100,100);
this.setSize(800,600);
this.setVisible (true);
getContentPane().add(myToolBar, BorderLayout.NORTH);
myToolBar.setBorder(BorderFactory.createEtchedBorder() );
JButton1.setText("Button1");
JButton1.addActionListener(this);
myToolBar.add(JButton1);
JButton2.setText("Button2");
JButton2.addActionListener(this);
myToolBar.add(JButton2);
//addEingabePanel();
}
public void addEingabePanel ()
{
System.out.println("in add");
getContentPane().add(EingabePanel, BorderLayout.CENTER);
EingabePanel.add(EingabeLabel);
EingabePanel.add(JButton3);
EingabePanel.setVisible(true);
EingabePanel.repaint();
}
public void remEingabePanel ()
{
getContentPane().remove(EingabePanel);
getContentPane().add(AusgabePanel, BorderLayout.CENTER);
AusgabePanel.add(AusgabeLabel);
AusgabePanel.repaint();
}
public void actionPerformed (ActionEvent event)
{
String cmd = event.getActionCommand();
if (cmd.equals("Button1"))
{
System.out.println("Button1 gedrückt");
addEingabePanel();
this.repaint();
}
else if (cmd.equals("Button2"))
{
System.out.println("Button2 gedrückt");
remEingabePanel();
this.repaint();
}
}
}
Wenn Zeile 37 nicht auskommentiert ist, kann ich zumindest das Eingabepanel ein- bzw. ausschalten.
Ansonsten findet bei Button-Aktion zwar die Ausführung der Methoden statt ("in add" wird in der Console ausgegeben), aber es wird nichts im Fenster angezeigt.
zunächst eine Verständnisfrage:
Wenn ich im Borderlayout bin, kann ich dort meinetwegen im Centerbereich ein Panel einrichten, das ich dann weiter über das Gridbaglayout mit Funktionen versehe. Richtig oder falsch?
Ist es überhaupt möglich Panels einfach auszutauschen? Der VE con Eclipse bietet dise Möglichkeit nach meiner Meinung z.B. nicht. Falls dem nicht so ist,wäre ich über Denkanstösse dankbar. JTabs und ChildFrames möchte ich nicht unbedingt benutzen.
Vielen Dank schon mal für eure Bemühungen