2012-06-09 12 views

Odpowiedz

9

Tutaj można znaleźć Absolute Positioning Tutorials. Proszę czytać uważnie, dlaczego takie podejście jest odradzane przez użyciem LayoutManagers

Aby dodać powiedzieć JButton do JPanel, można użyć to:

JButton button = new JButton("Click Me"); 
button.setBounds(5, 5, 50, 30); 
panel.add(button); 

Tutaj wypróbować ten przykładowy program:

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

public class AbsoluteLayoutExample 
{ 
    private void displayGUI() 
    { 
     JFrame frame = new JFrame("Absolute Layout Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel contentPane = new JPanel(); 
     contentPane.setOpaque(true); 
     contentPane.setBackground(Color.WHITE); 
     contentPane.setLayout(null); 

     JLabel label = new JLabel(
      "This JPanel uses Absolute Positioning" 
            , JLabel.CENTER); 
     label.setSize(300, 30); 
     label.setLocation(5, 5); 

     JButton button = new JButton("USELESS"); 
     button.setSize(100, 30); 
     button.setLocation(95, 45); 

     contentPane.add(label); 
     contentPane.add(button); 

     frame.setContentPane(contentPane); 
     frame.setSize(310, 125); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new AbsoluteLayoutExample().displayGUI(); 
      } 
     }); 
    } 
} 

Absolute Positioning Output

+0

co to jest "okienko"? czy mogę zamiast tego użyć JPanel? – whiteberryapps

+0

To nie działa ... – whiteberryapps

+0

@ user1441845: Oglądaj tę ostatnią edycję, jak możesz jej używać z 'JPanel' :-) Zapomniałem Ci powiedzieć, że musisz napisać' panel.setLayout (null) ', chociaż wspomniałem o tym w tym przykładzie kodu teraz :-) –

2

Sprawdź tę bezwzględną próbki kodu układ:

Absolute Layout demo

+0

+1, widziałem ten tutorial gdzieś indziej, po prostu nie pamiętam gdzie :-) –

2

W klasie dziedziczenie Rama:

setLayout(null); 

w twojej części:

setLocation(x,y); 
+0

nie działa ... – whiteberryapps

+0

+1, ładna wskazówka :-) –

+0

Obawy: 1) musisz ustawić układ panelu treści JFrame, a nie samą ramkę JFrame. 2) Jeśli układ kontenera ma wartość NULL, to koder jest całkowicie odpowiedzialny zarówno za lokalizację *, jak i * rozmiar dodawanych komponentów. 3) Powinieneś dodać zastrzeżenie dotyczące unikania używania układu zerowego i pozycjonowania absolutnego. –

3

Spróbuj te 2 ... w połączeniu ze sobą ...

setLocation() i setBounds()

Jeszcze lepiej jest używać GroupLayout, opracowanego przez zespół NetBeans w 2005 roku. WindowsBuilder Pro jest dobrym narzędziem do budowy Gui w języku Java

+0

+1, chciałbym móc zrozumieć GroupLayout, bez wątpienia jednego z NAJLEPSZYCH Managerów Układów wokół –

+1

@nIcEcOw: majsterkowanie w edytorze GUI NetBeans i zbadanie wygenerowanego kodu to jeden sposób na eksperymentowanie z 'GroupLayout'. – trashgod

+0

@trashgod: Interesujący pomysł, przeciągnij/upuść na IDE, eksperymentuj i baw się z kodem, jak zwykle. To jedna wspaniała rada, dzięki :-) –

Powiązane problemy