Layout

tomovic

Bekanntes Mitglied
hallo,
ich möchte gerne ein Applet erstellen mit 3 Rubriken...
Die soll so aussehen:

Haustier<--klick Fische TierimZoo... 20 Label

Katze Hund<--klick Hamster.... 20 Label

Hund1.jpg Hund2.jpg..... 20 Label

Es geht mir gerade nur um das Layout. google war schon Einsatz 🙂. Wenn ich GridLayout nehme, dann muss ich mich um Vertikal und Horizontal Code kümmern. Wenn ich FlowLayout nehme,dann kann ich keinen Absatz machen. Gibt es eine Alternative?
 
Ich persönlich hab mit GridBagLayout auch immer meine Probleme. Daher noch die Alternative: Man kann die Layoutmanager sehr schön verschachteln. Wenn man mal ein Gefühl dafür entwickelt hat, geht das ganz gut. Es hilft auch sich davor eine Skizze zu machen.
 
hallo,
thx all,

Mir gefällt GridBagLayout....
Problem 1:

Ich habe 4 Label und die sollen so aussehen:

Weihnachtsbaumständer Hund
See Pferd

Mit GridBagLayout sieht das leider so aus:

Weihnachtsbaumständer Hund
See.............................Pferd (die Punkte bitte wegdenken)

Kann man da was machen?
 
Ja, du setzt die gridwith von Weihnachtsbaumständer auf 2
und fügst dann eine weitere spalte ein.
somit hast du für die x,y positionen :
Weihnachtsbaumständer X=0, Y=0 ,GRIDWIDTH =2
Hund X=2, Y=0
See X=0, Y=1
Pferd X=1, Y=1
 
Zuletzt bearbeitet:
hi,
thx,
sieht besser aus :applaus:
Das Ziel ist aber:

Begriff Leerzeichen Begriff Leerzeichen Begriff Leerzeichen Begriff (es kommen noch 30 Begriffe)😱

Problem 2:
Die Begriffe ändern sich 😱

Ich dachte jetzt an: Eine Zelle ein Buchstabe, dann muss ich für jeden Begriffe für die Zelle ausrechnen, macht das so Sinn ?:rtfm:
 
was anderes:

Lösungsweg A:
Kann ich erst ein Flow Layout erstellen und dann ein Gridbaglayout?

Lösungsweg B:
Ich habe folgenden Code in mein Projekt eingefügt.
PHP:
JPanel content = new JPanel(); // geändert.
         this.add(content);
         
JTextField tf = new JTextField(10);         
          tf.setBounds(100, 200, 300, 400);
          content.add(tf);

Dummerweise wird alles nach Flow Lyout angezeigt, setBound interresiert java nicht.
 
Hi,
Flow Layout ist das default Layout für JPanels. Falls du mit setBounds(....) die Elemente absolut positionieren willst, musst das Layout vom Panel mit jpanel.setLayout(null) gesetzt werden. Dann werden die Elemente absolut positioniert.
Java:
...
// code...
...
JFrame frame = new JFrame();
Container content = frame.getContentPane();
content.setLayout(null);
JLabel label1 = new JLabel("Label 1");
JLabel label2 = new JLabel("Label 2");
label1.setBounds(10, 20, 80, 23);
label2.setBounds(100, 20, 80, 23);
content.add(label1);
content.add(label2);
...
// noch mehr code ...
...
 
Zuletzt bearbeitet:
das Problem:
PHP:
Container content = frame.getContentPane();
content ist in meiner Klasse und frame in meiner Main.😱😱😱😱
Alles in main war mein Gedanke, dann wird mein Mouseadapter Feuer Rot.
Alles in meiner tomclass, dann bekomme ich mit add Probleme.
Momentan wird jetzt mein Fenster geöffnet 0.5 mal 3 cam groß, wenn ich es groß ziehe, ist alles weis.


PHP:
                                                    package paketmann;
 import java.awt.BorderLayout;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import javax.swing.BorderFactory;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JFrame;
 import javax.swing.JButton;
 import java.awt.Container;
 import javax.swing.GroupLayout;
 import javax.swing.*;
 import java.awt.*;
 import java.io.FileReader;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.BufferedReader;
 
 
 
 public class tomclass extends JPanel {
     private JButton firstButton;
     private JLabel lbl1;

  
     class LblListener extends MouseAdapter {
         @Override
         public void mouseClicked(MouseEvent e) {
             Object source = e.getSource();
  
             if (source == lbl1) {
                 JOptionPane.showMessageDialog(null,
                         "Es wurde auf Label1 geklickt");
             }
          
  
             if (source == firstButton) {
                 JOptionPane.showMessageDialog(null,
                         "Es wurde auf Button geklickt");
             }
         }
     }
  
     public tomclass() {
   	  	 
    	 Container content = new JPanel();
         this.add(content);
         content.setLayout(null);
         firstButton = new JButton(new ImageIcon("c:/1.jpg"));
         lbl1 = new JLabel("Weihnachtsbaumständer");
      
         MouseAdapter listener = new LblListener(); 
         
         firstButton.setBounds(100, 200, 800, 230);
         content.add(firstButton);
         firstButton.addMouseListener(listener);
         
         // lbl1
         lbl1.setBounds(100, 200, 800, 230);
         content.add(lbl1);
         lbl1.addMouseListener(listener);
           
     }
     public static void main(String[] args) {
         JFrame frame = new JFrame("ButtonTest");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.add(new tomclass());     
         frame.pack();
         frame.setVisible(true);
     }
 }
 

Zurück
Oben