gui anfängerfragen

Status
Nicht offen für weitere Antworten.

jopp

Mitglied
hi leute

ich bezeichne mich als anfänger in swing und bin gerade dabei ein programm im rahmen eines schulprojektes zu entwickeln.

dieses programm soll nichts anderes machen, als eine grafische oberfläche zu bieten und mit datenbanken zu arbeiten. das mit den datenbanken ist absolut kein problem, aber mit grafischen oberflächen habe ich leider fast keine erfahrung.

ich weiß zwar das ich JFrame verwenden sollte um eine anwendung zu realisieren und das ich dann mittels LayoutManager und JPanels diese Oberfläche gestalten kann, aber es sind ein paar fragen aufgetreten, welche ihr mir vielleicht beantworten könnt.

1. stimmt es das JFrame die beste lösung für ein anwendungsfenster ist?

2. ist es möglich den typ des LayoutManagers nachträglich zu ändern?

3. falls es nicht möglich ist das layout zu ändern, welche manager bieten mir genug freiheit, um verschiedene unterfenster im hauptfenster nach belieben anzuordnen? zum beispiel möchte ich ein vorhandenes unterfenster durch ein anderes mit unterschiedlicher grösse ersetzen. das programm soll dan so aussehen wie z.b. adobe photoshop, die anwendung und in dieser die möglichkeit einzelne fenster anzuzeigen, aber auch beliebig zu positionieren.

4. wenn ich neue fenster vom programm aufmachen lasse, um mit dem benutzer einen dialog zu führen, welches objekt verwende ich dazu am besten: JFrame, JWindow,...

5. welches objekt verwende ich am besten als unterfenster, also um dieses in ein vorhandenes panel zu setzen.


ich bin mir sicher, dass mir einer von euch weiter helfen kann.

mfg


jopp
 

valo

Mitglied
Hi jopp,

also ich bin kein Profi, aber vielleicht hilft dir das:

zu
1. Das JFrame ist in der Tat eins der besten Möglichkeit für ein Anwendungsfenster.

2. Der Layoutmaneger ist automatisch per Default auf Flowlayout gesetzt. Das heisst wenn man keinen Layoutmaneger überschreibt, wird der Flowlayout eingesetzt.
Da die Reihenfolge beim erstellen des Fensters geschahtelt ist, schlage ich vor du beutzt für jedes JPanel was du erstellst einen eingenen Layoutmanager. Z.B.

Du hast einen JFrame und du holst dir einen ContentPane. Jetzt hast du den Rahmen aber nichts drin.
Als zweites machst du dir einen JPanel. Den würde ich als Hauptpenel nutzen.
Als drittes erstelst du dir andere JPanels mit Componenten die du brauchst z.B. JButtons JTextField usw.
Dann als letztes pakst du deine einzelne JPanels in das Hauptpanel und anschliesend verknüpst du das Hauptpanel mit dem ContentPane.
Siehe auch Source Beispiel:
Code:
import javax.swing.*;
import java.awt.*;

public class MyButton extends JFrame{
  Container myPane=getContentPane();
  JPanel hauptPanel=new JPanel();
  JPanel links=new JPanel();
  JPanel rechts=new JPanel();


  public MyButton() {

    //Fenstergrösse setzen
    
setSize(800,800);

    //Erzeugen von Componenten z.B. Buttons
    
JButton b01=new JButton("Linkes Fenster 1");
    JButton b02=new JButton("Linkes Fenster 2");
    JButton b03=new JButton("Rechtes Fenster 1");
    JButton b04=new JButton("Rechtes Fenster 2");

    //Überschreiben des JPanels namens lins von default Layoutmanager auf das BorderLayout
    
links.setLayout(new BorderLayout());
    
//Die Buttons in das Panel namens links einfügen
    
links.add(b01);
    links.add(b02);

    //Überschreiben des JPanels namens rechts von default Layoutmanager auf das GridLayout
    
rechts.setLayout(new GridLayout(2,1));
   
 //Die Buttons in das Panel namens rechts einfügen

    rechts.add(b03);
    rechts.add(b04);

    //Jetzt haben wir zwei Panels namens links und rechts die Layouts sind für die Inhalte gesetzt
    //Jetzt packen wir die beiden Panels in das hauptpanel. Der Vorteil ist, dass wir dem Hauptpanel
    //ebenfals sagen können wie er die beiden Panels anordnen soll z.B

    hauptPanel.setLayout(new BorderLayout());

    //Die beiden Panel in das Hauptpanel einfügen

    hauptPanel.add(links,"East");
    hauptPanel.add(rechts,"West");

    //Jetzt packen wir das hauptPanel dem Fenser hinzu

    myPane.add(hauptPanel);

  }
  public static void main(String[] args) {
    MyButton myButton1 = new MyButton();
    myButton1.show();
  }

}
Ich hoffe das es einwennig geholfen hat.
 

jptc.org

Bekanntes Mitglied
Tja wenn du eine GUI mit freien Unterfenstern beliebiger Anzahl entwickeln willst, so kommst du nicht an Internal Frames und Desktop Panes vorbei.

Für die GUI verwendest du weiterhin als Container einen JFrame. Diesem JFrame fügst du dann eine JDesktopPane hinzu. Innerhalb der JDesktopPane kann man dann JInternalFrame's zeichnen.

Code:
JDesktopPane desk = new JDesktopPane();
JInternalFrame jif = new JInternalFrame("NAME", // title
                                                           true, // resizable
                                                           true, // closable
                                                           true, // maximizable
                                                           true); // iconifiable
jif.setPreferredSize(new Dimension(250, 100));
desk.add(jif);
desk.revalidate();

Mit diesem Gerüst kannst Du eine GUI bauen mit vielen kleinen Unterfenstern.

Karsten Voigt
http://www.java-performance-portal.org
 
G

Guest

Gast
danke für die antworten

sie haben mir sehr geholfen. das mit dem desktoppane und den internalframes werde ich gleich mal ausprobieren.

werde dann die ergebnisse posten

jopp
 

jopp

Mitglied
hat super funktioniert. dankeschön

eine frage hätt ich noch: wie bekomme ich den button zum minimieren des internal frame?


jopp
 

jptc.org

Bekanntes Mitglied
Eigentlich sollte der letzte Werte im Constructor (iconifiable) das Problem lösen, wenn dieser auf true steht. Man kann auch im Nachhinein den Werte setzen (es gibt eine set- und get-methode dafür). Falls das bei dir nicht funzt, so poste mal bitte den sourcecode.

Karsten Voigt
http://www.java-performance-portal.org
 
T

Tina

Gast
Ich bin grad ein wenig der Verzweiflung nahe, darf ich mal kurz mein Probem schildern?*hoffedassjemandhelfenkann*

Ich (idiotischer, naivier Anfänger) programmiere grad ne Kontoverwaltung (unser aller Lieblingsthema :))

So, ich möchte gern bestimmte Oberflächen für den Benutzer austauschen, sprich: ich habe eine Hauptmenüleiste und ein Fenster wo je nach Menüpunkt etwas anderes erscheint.

So weit, so gut...ich entnehme dem was ich bisher hier so gelesen habe (JA, ich habe die Boardsuche benutzt und bin mittlerweile sogar in der API zu Hause^^) wäre es der logischste weg, für jedes dieser Dinge (Leiste, Hauptfenster) ein Panel zu machen, richtig?

So, es sieht auch scon sehr gut aus aber elider reagiert es nicht auf das was ich tue :bae:

Ich habe also grob ein mainPanel wo ich 2 Panels reinsetze....in eins kommen ein paar Buttons, in das andere kommt so ne Begrüßungsseite...Jetzt soll beim klicken auf "Konto anlegen"(Text kann beliebig ausgetauscht werden) das Panel mit dem Text ersetzt werden durch ein anderes....

So, entweder mache ich dabei etwas falsch, oder ich hab das mit dem ActionListener noch nicht gerafft....:(

Sagen wir mal, ich setze dem Button n ActionCommand=("newK")

und mache dann das:

Code:
public void action performed (ActionEvent evt){
if (evt.getActionCommand.equals("newK")){
        //das nächste ist das Panel das geleert und neu gefüllt werden soll/ersetzt werden soll
            pane.removeAll();
            pane.add(denContentdenIchHabenWill);
            pane.validate();
}
}

so, ich hab jetzt quasi das Label oder was auch immer ausm Panel raus genommen und setze da was nbeues rein und aktualisiere(????)

Kann ich auch das ganze Panel ersetzen? Weil so wie oben funktioniert es nicht....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Einige Anfängerfragen (Datentypen, Wertebereich) Java Basics - Anfänger-Themen 11
M Anfängerfragen.... Java Basics - Anfänger-Themen 2
E Erste Schritte Verschiedene Anfängerfragen (Rekursion, Terminierung, Schleife, etc.) Java Basics - Anfänger-Themen 5
C Einige Anfängerfragen (Return-Wert, Exception...) Java Basics - Anfänger-Themen 11
J Einige Anfängerfragen Java Basics - Anfänger-Themen 3
S Erste Schritte Einige Anfängerfragen Java Basics - Anfänger-Themen 5
B 2 Anfängerfragen zu JDK und javac Java Basics - Anfänger-Themen 4
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
M Anfängerfragen zu GUI Java Basics - Anfänger-Themen 2
J showInputDialog anfängerfragen =D Java Basics - Anfänger-Themen 3
F Anfängerfragen Java Basics - Anfänger-Themen 3
M Anfängerfragen zu Java Applets Java Basics - Anfänger-Themen 4
A 2 anfängerfragen Java Basics - Anfänger-Themen 5
T verschiedene Anfängerfragen Java Basics - Anfänger-Themen 20
N Anfängerfragen und Zugriff auf JTextField Java Basics - Anfänger-Themen 5
T Anfängerfragen von Takeru Java Basics - Anfänger-Themen 4
R Noch ein paar Anfängerfragen. Java Basics - Anfänger-Themen 4
S Ein paar Anfängerfragen Java Basics - Anfänger-Themen 17
B Grobe Anfängerfragen Java Basics - Anfänger-Themen 2
1 Einige Anfängerfragen Java Basics - Anfänger-Themen 12
A Kleine Anfängerfragen u.a.: Kann man Random "speichern& Java Basics - Anfänger-Themen 6
B Paar richtige Anfängerfragen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben