2008-11-22 15 views
6

Hey herkesi almak için genişleyen. Bir düğme ve üzerinde bir etiket ile bir salıncak GUI yapmaya çalışıyorum. im bir sınır düzeni ve (kuzey alanda) etiketini kullanarak ince görünmeye devam eder ancak düğme çerçevenin kalanı (bu merkez alanında var) kadar sürer. Herhangi bir fikrin nasıl düzeltileceğini?JButton tüm çerçeve/konteynerin

cevap

9

başka panele düğme eklemek ve sonra çerçeveye bu paneli eklemek zorunda.

böyle bir şey değiştirin bunu

public static void main(String [] args) { 
    JLabel label = new JLabel("Some info"); 
    JButton button = new JButton("Ok"); 

    JFrame frame = ... 

    frame.add(label, BorderLayout.NORTH); 
    frame.add(button , BorderLayout.CENTER); 
    .... 

} 

önce::

O BorderLayout şimdi şu şekilde görünmelidir orta

Kişisel kodda olduğu hiç hangi bileşen genişler çıkıyor

public static void main(String [] args) { 
    JLabel label = new JLabel("Some info"); 
    JButton button = new JButton("Ok"); 
    JPanel panel = new JPanel(); 
    panel.add(button); 

    JFrame frame = ... 

    frame.add(label, BorderLayout.NORTH); 
    frame.add(panel , BorderLayout.CENTER); 
    .... 

} 

önce/sonra

Before http://img372.imageshack.us/img372/2860/beforedl1.png After http://img508.imageshack.us/img508/341/aftergq7.png

+0

sonra Panelde varsayılan LayoutManger nedir? Akış düzeni? –

+0

FlowLayout, bu doğru. – OscarRyz

0

Yine :)


    import javax.swing.*; 

    public class TestFrame extends JFrame { 
     public TestFrame() { 
      JLabel label = new JLabel("Some info"); 
      JButton button = new JButton("Ok"); 
      Box b = new Box(BoxLayout.Y_AXIS); 
      b.add(label); 
      b.add(button); 
      getContentPane().add(b); 

     } 
     public static void main(String[] args) { 
      JFrame f = new TestFrame(); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      f.setLocationRelativeTo(null); 
      f.setVisible(true); 

     } 
    } 
2

Ya da sadece Mutlak düzenini kullanır. Layouts Pallet üzerinde.

Veya ile etkinleştirmek:

frame = new JFrame(); 
... //your code here 

// to set absolute layout. 
frame.getContentPane().setLayout(null); 

Bu şekilde, özgürce her yerde kontrol yerleştirebilirsiniz sizin gibi.