# Aufbau einer Seite



## terzbke (28. Aug 2012)

Guten Morgen allerseits,

bin dabei, von VB auf Java umzusteigen. Habe Schwierigkeiten schon bei grundlegenden Dingen. 
Meine Absicht ist, eine Seite zu erstellen, die von der Struktur etwa so aussehen soll:

                                      Überschrift mehrzeilig

Aufgabe 1                      Aufgabentext                         Eingabefeld

Aufgabe 2                      Aufgabentext                         Eingabefeld

....

Ich muss gestehen, schon die mehrzeilige Überschrift bereitet mir Schwierigkeiten, obwohl ich alle möglichen Layouts probiert habe.    
Meine Bitte ist: Könnte mir jemand sagen, welche Funktionen ich nacheinander einsetzen sollte, um diese Seite zu realisieren? 

Gruß an alle.

Joachim


----------



## darekkay (28. Aug 2012)

Zu mehrzeiligen Texten: du kannst ein normales JLabel nehmen und HTML-Code nutzen. Ein <html> um den Inhalt und wie üblich mit <br> neue Zeilen erzeugen:

```
new JLabel("<html>erste zeile<br>zweite zeile</html>")
```


----------



## terzbke (28. Aug 2012)

Lieber darekkay,

vielen Dank für Deine Antwort. 
Habe ich versucht. Das Problem ist, die zweite Zeile soll, wie die erste auf dem Bildschirm zentriert sein. Habe ich mit html nicht geschafft, die zweite Zeile wird nicht eingerückt.
Gruß 
Joachim


----------



## Blackhole16 (28. Aug 2012)

Morgen,

sonst kannste auch einfach mit arrays arbeiten. Erzeugst die Überschrift und dann einen String[] mit den Aufgabentexten, dann ein JLabel[] in einer for-Schleife und übergibst den jeweiligen String an den Konstruktuor. Dann noch ein JTextField[] als Eingabe und packst das ganze in ein GridLayout.

mfg
BH16

[EDIT]Um den Label zu zentrieren würde ich erstmal BorderLayout für das JFrame nehmen und dann in top die Überschrift schreiben. Diese kannst du dann mit JComponent.setAlignmentX(float alignmentX) mittig setzen[/EDIT]


----------



## terzbke (28. Aug 2012)

Lieber blackhole16,

vielen Dank für Deine Antwort.

Auch mit dem gridlayout, dem borderlayout und dem flowlayout habe ich die Überschrift versucht, hat nicht geklappt. Die Überschrift sollte mehrzeilig sein, alle Zeilen zentriert und nicht ganz oben am Rand erscheinen. Für eine Zeile bekomme ich das mit flowlayout hin, aber nicht für mehr Zeilen.
Mein Problem ist, auch bei den anderen Komponenten, sie auf dem Bildschirm nach meinen Vorstellungen zu plazieren, da weiß ich bis jetzt nicht wie.

Gruß

Joachim


----------



## TR (28. Aug 2012)

```
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

JPanel panel = new JPanel(new BorderLayout());
JLabel label = new JLabel("<html>Das ist die 1. Zeile, <br>das ist die 2. Zeile</html>");
label.setBorder(BorderFactory.createEmptyBorder(25,0,0,0));
label.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label, BorderLayout.NORTH);
frame.getContentPane().add(panel);

frame.pack();
frame.setVisible(true);
```

für die anderen Sachen schau mal hier How to Use Various Components (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) ob es dir weiterhilft, wenn nicht kannst ja nochmal nachfragen


----------



## terzbke (28. Aug 2012)

Lieber TR,

danke für den Code.
Probiere ich aus, und melde mich dann wieder.
Nebenbei gefragt, wie hätte ich alleine auf diese Überlegungen kommen können? Ich habe Literatur, schaue im Netz nach usw., trotzdem bekomme ich es ohne Hilfe nicht hin.

Gruß

Joachim


----------



## Kjubert (28. Aug 2012)

Ich versteh dich gut. Habe früher auch nur VB benutzt und war von OOP dann doch ziemlich erschlagen.
Auch die selbst geschriebenen GUIs schrecken ab - mit VB war das etwas "spielerischer". Aber ganz ehrlich: Java zu lernen stellt sich früher oder später als eine sehr dankbare Aufgabe heraus - versprochen!


----------



## TR (28. Aug 2012)

terzbke hat gesagt.:


> Lieber TR,
> 
> danke für den Code.
> Probiere ich aus, und melde mich dann wieder.
> ...



wie gesagt mein link könnte z.B. helfen.
Du kannst dir ja da mal labels How to Use Labels (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) anschauen, da steht z.B. die Methode 
	
	
	
	





```
setHorizontalAlignment(int)
```
 drin. und genauso macht man es mit den anderen, wie z.B. mit deinen Textfeldern die du noch haben willst How to Use Text Fields (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)


----------



## terzbke (28. Aug 2012)

Mit der Geduld ist das so eine Sache.
Ja, lieber TR, der Link sieht hilfreich aus. Da kümmere ich mich jetzt drum und melde mich dann wieder.
Dank an alle.

Joachim


----------



## terzbke (28. Aug 2012)

So, ich habe den Code von TR ausprobiert. Die beiden Zeilen werden zentriert ausgegeben, leider wird die 2. Zeile nicht eingerückt wie gewünscht.
Was ich gerne hätte, wäre:
                                  Wie löse ich Matheaufgaben?  zentriert
                                          Trigonometrie  zentriert

Geht das vielleicht mit zweimal FlowLayout und unterschiedlichen Label oder doch ganz anders?
Gruß

Joachim


----------



## Peter W. Marth (28. Aug 2012)

Könnte man mit GridBagLayout lösen:


```
public class GUI extends JFrame {

    public static void main( String[] args ) {
        new GUI().setVisible( true );
    }

    public GUI() {
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setLayout( new GridBagLayout() );
        add( getCenteredLabel( "Wie löse ich Matheaufgaben?" ), getConstraints( 0, 0 ) );
        add( getCenteredLabel( "Trigonometrie" ), getConstraints( 0, 1 ) );
        pack();
    }

    private JLabel getCenteredLabel( String text ) {
        JLabel label = new JLabel( text );
        label.setHorizontalAlignment( SwingConstants.CENTER );
        return label;
    }

    private GridBagConstraints getConstraints( int x, int y ) {
        return new GridBagConstraints( x, y, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets( 5, 5, 5, 5 ), 0, 0 );
    }
}
```


----------



## terzbke (28. Aug 2012)

Lieber Peter W. Marth,

vielen Dank für den Code. Werde mich damit beschäftigen, in der Hoffnung, dann auch gridbaglayout besser zu verstehen. Wird überall als das schwierigste Layout bezeichnet. Habe mich bis jetzt davor gedrückt.

Gruß

Joachim

Ja, so funktioniert's. Jetzt bleibt mir die Aufgabe, dieses Verhalten auf den ganzen Bildschirm als Überschrift zu bringen und die einzelnen Anweisungen dafür zu verstehen.


----------



## darekkay (28. Aug 2012)

terzbke hat gesagt.:


> Ja, so funktioniert's. Jetzt bleibt mir die Aufgabe, dieses Verhalten auf den ganzen Bildschirm als Überschrift zu bringen und die einzelnen Anweisungen dafür zu verstehen.



Hier meine Empfehlung:
Java ist auch eine Insel – 15.10 Alles Auslegungssache: die Layoutmanager

Insbesondere die dort gezeigte Methode "addComponent", die ich meistens benutze, um den Code verständlich und "schick" zu halten.


----------



## OSBI_Fan (28. Aug 2012)

Hallo terzbke,

wenn Du von *VB* möglichst schnell und einfach auf *Java* umsteigen bzw. produktiv in Java entwickeln möchtest, wären die folgenden Links für Dich interessant.

The Jabaco Programming Language - Explore Your Opportunities!

Die *Jabaco* Entwicklungsumgebung (IDE) ist ein *BASIC Compiler* der die *Syntax von VB6 und VBA* unterstützt.

Basisfunktionen:


Objektorientierte Programmiersprache mit Syntax-Anlehnung an Visual Basic.
Der Jabaco-Compiler erzeugt performanten, plattformunabhängigen Java-Bytecode.
Zugriff auf zahlreiche Java-Techniken sowie auf eine Vielzahl weiterer Bibliotheken.
Alternativ kannst Du eine IDE einsetzen, die Dir das Layout-Design abnimmt oder zumindest erleichtert. Für den Einstieg würde ich eher zur *Netbeans* als zu *Eclipse* raten. Als Java Beginner habe ich gute Erfahrung mit *XDEV3* gesammelt.

XDEV3 ist so konzipiert, das Du Oberflächen wie mit einem Grafikprogramm designen kannst. Alle GUI-Komponenten lassen sich per Drag&Drop auf die Arbeitsfläche einfügen und dort pixelgenau positionieren.

XDEV Software Corp. - Startseite

*Beitrag mit XDEV3 - Vorstellung:*

http://www.java-forum.org/awt-swing-swt/139906-designt-gui.html#post927392

Grüße
OSBI_Fan

OSBI = Open Source Business Intelligence


----------



## terzbke (28. Aug 2012)

Vielen Dank für Eure freundlichen Empfehlungen. Hilft mir sehr.

Joachim


----------



## r.w. (29. Aug 2012)

OSBI_Fan hat gesagt.:


> Hallo terzbke,
> 
> wenn Du von *VB* möglichst schnell und einfach auf *Java* umsteigen bzw. produktiv in Java entwickeln möchtest, wären die folgenden Links für Dich interessant.
> 
> ...



Hammer ... was es alles gibt.


----------



## Kjubert (29. Aug 2012)

Aber mal ganz ehrlich: Um Java zu lernen ist das doch bestimmt nicht sinnvoll, oder?
Ich kann mir vorstellen, dass man gerade den Bruch mit der Syntax bitteschön sauber und hart machen sollte. Da lernt man ja nicht Java, sondern man lernt Java-Funktionen mit VB zu benutzen. Oder hab ich da was falsch verstanden?


----------



## r.w. (29. Aug 2012)

Kjubert hat gesagt.:


> Aber mal ganz ehrlich: Um Java zu lernen ist das doch bestimmt nicht sinnvoll, oder?
> Ich kann mir vorstellen, dass man gerade den Bruch mit der Syntax bitteschön sauber und hart machen sollte. Da lernt man ja nicht Java, sondern man lernt Java-Funktionen mit VB zu benutzen. Oder hab ich da was falsch verstanden?



100% Zustimmung!


----------

