PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GUI Frage



TRX
24.04.2009, 19:19
HI an Alle!

um mein Problem mal zu schildern ich lern gerade Java, und wollte ein Programm mit Gui schreiben.
Soweit eigentlich noch ok..
Ich habe mir ein schönes Startfenster mit ein paar Buttons gemacht...
Jetzt wollte ich,dass wenn man auf einen der Buttons klickt, alle Buttons verschwinden und stattdessen z.B. ein paar Textfelder und andere Buttons auftauchen, praktisch ne neue Oberfläche aber in demselben Fenster. Und da hab ich noch keine Vorstellung wie man so was einfach lösen kann.

Hoffe auf baldige Antworten!

Gruß
TRX

br00_pwn
24.04.2009, 19:23
also mit java kenne ich mich nicht wirklich aus...z.b in vb kannst du verschiedene elemente mit deinelement = invisible ausblenden.. sobald der befehl deinelement = visible im folgenden code kommt wird es wieder sichtbar..
ich denke wird in java nicht anders gehen, einfach mal google benutzen..

TRX
24.04.2009, 19:29
an die möglichkeit habe ich auch schon gedacht ,aber das wäre ziemlich aufwändig ,denn die Startseite wird ca. 20 Buttons bekommen die dann zu einzelnen Oberflächen führen sollten und dass alles jedesmal invisble setzten oder dann wieder visible ist ein ziemlicher Aufwand.

Ich vermute das man so etwas mit panels machen könnte aber ich wäre für Hilfe dankbar!

br00_pwn
24.04.2009, 19:32
hm..kannst bestimmt einen bestimmten bereich deffinieren, worin du die element setzt und dann einfach diesen bereich invis setzten ect..

TRX
24.04.2009, 21:43
@br00_pwn:
Ja ,ich glaub des waren diese panels, also wenn da jemand einen beispiel source hat oder mir des kurz erklären würde, wär es gut.

Gruß
TRX

blackberry
24.04.2009, 22:27
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JButton.html
Methods inherited from class javax.swing.JComponent
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComponent.html#setVisible(boolean (http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComponent.html#setVisible%28boolean))

Speicher deine Buttonhandels doch in einem Array ab.
Beispielcodes: (ungetestet und teilweise unvollständig)


// Deklaration
JButton[] MeineTollenButtons = new JButton[100];
// Mit NULL vorbelegen
for(int i = 0; i < MeineTollenButtons.length; i++)
{
MeineTollenButtons[i] = null;
}
// Buttons erstellen
MeineTollenButtons[0] = new JButton(...);
MeineTollenButtons[1] = new JButton(...);
[...]
MeineTollenButtons[n] = new JButton(...);

// Alle Buttons unsichtbar machen
for(int i = 0; i < MeineTollenButtons.length; i++)
{
if (MeineTollenButtons[i] != null)
{
MeineTollenButtons.setVisible(false);
}
}

TRX
24.04.2009, 22:40
so würde es wahrscheinlich funktionieren, aber ist es auch mit der contentpane möglich?

Bsp:
box1 (enthält die Buttons 1-5)
contentPane.add(box1);

box2 (enthält Buttons 6-10)
Button Abfrage (wenn Button 2 gedrückt:)
contentPane.add(box2);

So versuch ich desnämlich zurzeit..(Klappt aber noch nicht)

Gruß TRX

EDIT:

Habs jetzt doch geschafft!




import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class LAF extends JFrame {

JPanel box1;
JPanel box2;
JButton bmotif, bwindows, bmetal, bumschalt;
JCheckBox chk1, chk2;
ButtonListener butLis = new ButtonListener();
Container contentPane = getContentPane();


public LAF() {
super();

// Hauptfenster einrichten
setTitle("Look and Feel");
contentPane.setBackground(Color.LIGHT_GRAY);



//Box 2
box2 = new JPanel();


bmotif = new JButton("Motif");
bwindows = new JButton("Windows");
bmetal = new JButton("Metal");

bmotif.addActionListener(butLis);
bwindows.addActionListener(butLis);
bmetal.addActionListener(butLis);


box2.add(bmotif);
box2.add(bwindows);
box2.add(bmetal);


// Box 1
box1 = new JPanel();

bumschalt = new JButton("Umschalten");
bumschalt.addActionListener(butLis);

chk1 = new JCheckBox("Unterstrichen");
chk2 = new JCheckBox("Kursiv");

box1.add(chk1);
box1.add(chk2);
box1.add(bumschalt);

contentPane.add(box1);



setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

// Hier Ereignisbehandlungsmethoden für Komponenten

// Ereignisbehandlung für Schaltflächen zum
// Umschalten des Look&Feels
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource()==bmotif)
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
if (e.getSource()==bwindows)
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
if (e.getSource()==bmetal)
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
if (e.getSource()==bumschalt)
contentPane.remove(box1);
contentPane.add(box2);
}
catch(Exception ex) {
}
// Das neue Look&Feel allen Komponenten mitteilen
SwingUtilities.updateComponentTreeUI(contentPane);

}
}

public static void main(String args[]) {
// Fenster erzeugen und anzeigen
LAF hauptfenster = new LAF();
hauptfenster.setSize(300,200);
hauptfenster.setLocation(200,300);
hauptfenster.setVisible(true);
}
}


Ich denk der Code ist selbsterklärend..
Ist nur teilweise von mir, deshalb auch so zusammen gestückelt. ;-)