-1

對不起,沒有在以前的帖子中輸入特定的代碼。我意識到我做錯了什麼,但現在又遇到了另一個問題。我試圖在單擊按鈕後在JFrame的特定位置放置一個JPanel,但沒有任何事情發生,這裏是我的Actionperformed方法的代碼。將JPanel放在特定區域的JFrame上

public void actionPerformed(ActionEvent e) 
    { 


      JPanel pa=new JPanel(); 
      frame.getContentPane().setLayout(null); 
      pa.setBackground(Color.yellow); 
      pa.setLocation(50,150); 
      pa.setSize(150,100); 
      pa.setBounds(50,150,150,100); 
      pa.setOpaque(true); 
      frame.add(pa); 


    }       
+1

請添加一些源代碼作爲具體的例子,以便其他人可以提供幫助。當然你的問題就像「出錯了,我不知道爲什麼」 –

+0

如果你發佈你的代碼,我會很樂意提供幫助。 – CodingNinja

+0

@Tommy我在我的文章中添加了一些代碼。我對編碼相當陌生,所以任何幫助都會很棒。 –

回答

0

有很多方法可以做到這一點。

  1. 使用setLocation(x, y)setSize(length, width)

  2. 使用setBounds(x, y, length, width)

  3. 如果1和2不工作,考慮佈局管理器:

我強烈建議你拿一看Layout Managers JavaDoc。下面是每個人的鏈接,我建議你的情況在他們旁邊有一個星號(*)。

  • BorderLayout*爲總體方向(北,南,東,西)

  • BoxLayout使組分在單個行或列。它尊重組件的最大尺寸,並且可以讓組件對齊。

  • CardLayout允許您在不同的時間實現一個區域,該區域在不同時間通常由組合框控制,組合框的狀態決定CardLayout顯示哪個面板(組件組)。

  • FlowLayout是每個JPanel的默認佈局管理器。它只是簡單地將組件放在一行中。

  • GridBagLayout是一個複雜的,靈活的佈局管理器。它通過將組件放置在單元格網格中來對齊組件,從而允許組件跨越多個單元格。網格中的行可以具有不同的高度,並且網格列可以具有不同的寬度。

  • GridLayout*只是使一堆組件的大小相等,並顯示在請求的行數和列數中。

  • GroupLayout是一個爲GUI生成器工具開發的佈局管理器,但它也可以手動使用。 GroupLayout分別與水平和垂直佈局配合使用。佈局是爲每個維度獨立定義的。因此,每個組件需要在佈局中定義兩次。

  • SpringLayout是一個靈活的佈局管理器,爲GUI構建器設計使用。它允許您指定其控制下的組件邊緣之間的精確關係。例如,可以定義一個組件的左邊緣距第二個組件的右邊緣有一定的距離(可以動態計算)。 SpringLayout根據一組約束條件來繪製相關容器的子項。

聲明:其中大多數是Oracle JavaDoc有關佈局管理器的直接引號。