2011-03-25 60 views
0

我在將GUI組件放置在applet中時遇到問題。我正在尋找一種方法來使用絕對座標和大小來放置它。 這裏是我做了什麼:Java Applet組件的GUI問題

public class app extends JApplet { 


public void init() { 
    setSize(450,450); 
    try { 
     javax.swing.SwingUtilities.invokeAndWait(new Runnable() { 
      public void run() { 
       createGUI(); 
      } 
     }); 
    } catch (Exception e) { 
     System.err.println("Creation of swing components not finished"); 
    } 


} 

public void createGUI() { 
    JMenuBar menubar = new JMenuBar(); 
    JMenu menuFile = new JMenu("File"); 
    JMenuItem openItem = new JMenuItem("Open"); 
    menuFile.add(openItem); 
    menubar.add(menuFile); 
    setJMenuBar(menubar); 


    app_buttons ab = new app_buttons(); 
    add(ab.button1); 
    add(ab.button2); 
    add(ab.button3); 
} 



} 



public class app_buttons { 
    public JButton button1; 
    public JButton button2; 
    public JButton button3; 

    public apptextbox() { 
     button1 = new JButton("1"); 
       button1.setBounds(20,20,20,20); 
     button2 = new JButton("2"); 
       button2.setBounds(60,60,20,20); 
     button3 = new JButton("3"); 
       button3.setBounds(90,90,20,20); 

    } 
} 

我無法弄清楚如何做到這一點,無論是組件不顯示或他們適應整個applet區域。我想指定我的所有按鈕,textareas等,究竟它們有多大,以及它們的放置位置。我看過網上的教程,但它不工作,組件不顯示。

我不希望按鈕,textareas等調整大小。一切只是靜態的,我指出他們。例如,創建大小爲(15,35)的JTextArea時;它似乎無關緊要,因爲它無論如何調整大小。

感謝

+2

「我正在尋找一種使用絕對座標和尺寸的方法。」這就是問題會出現的地方,並且將小程序困擾到固定的位置。解決方法是使用標準佈局在運行時完成定位和調整GUI元素的大量工作。有關更多詳細信息,請參閱Java教程中的[使用佈局管理器](http://download.oracle.com/javase/tutorial/uiswing/layout/using.html)。 – 2011-03-25 17:11:55

回答

1

使用

setLayout(null); 

爲您的小程序在你的init()

+0

這工作正常的按鈕!然而,你如何處理JTextArea和JComboBoxes?我試過setLocation,但是組件不可見。如果我使用setBounds,除非輸入確切參數,否則不會顯示整個textarea – KaiserJohaan 2011-03-25 16:59:13

+1

如果使用空佈局,則您完全負責添加到該容器中的所有組件的大小和位置,因此您需要使用setBounds或等價物。我強烈建議您避免使用空佈局和精確定位,而是使用多個嵌套的JPanel,每個嵌套JPanel都有自己適當的佈局管理器。編輯:我想我說的是安德魯已經提出的以上 - 我第二次他所有的想法! – 2011-03-25 21:46:54