2011-05-01 65 views
0

你好 我閱讀了佈局,但沒有得到哪一個用於我的應用程序。 我想將圖像添加到JPanel並將JLabel放置在標題欄正下方的右上角。如何將JLabel放置在標題欄下方的右上角?

我寫了代碼,但它不工作。 JLabel顯示在中心。

我的代碼是

// Below line adds image to Jpanel 
panel = new ImagePanel(backgroundImage); 
// I want to add below label to Jpanel 
JLabel jdesignNo=new JLabel(designNo); 
jdesignNo.setFont((new java.awt.Font("Times New Roman", 1, 30))); 
jdesignNo.setBounds(900, 100, 50, 30); 
jdesignNo.setBackground(Color.GREEN); 
panel.add(jdesignNo); 
frame.getContentPane().add(panel); 
frame.setVisible(true); 

在上面的代碼中,我通過setBound設置居民點,但它不工作。

如何解決這個問題?

謝謝!

回答

1

請確保您有

panel.setLayout(null); 

,如果你想給自己定位的組件。

但是,鑑於應用程序的複雜性增長,識別和使用適合您需求的佈局管理器會使事情變得更容易。

+0

+1倡導的佈局。 – trashgod 2011-05-01 22:02:38

+0

-1用於引入空佈局;-) – kleopatra 2011-05-02 12:07:58

+0

:設置空佈局後.. setbound開始工作。現在它的顯示位置根據我的需要。 – 2011-05-04 19:17:09

4

由於您在佈局(圖像)中擁有主導功能,因此可能需要使用BorderLayout作爲主佈局。

frame.getContentPane().setLayout(new BorderLayout(4, 4)); 

然後將圖像添加到BorderLayout.CENTER

旁邊的JLabel想在BorderLayout.NORTH去現在

,如果你這樣做,它不會去遠對,爲北部創建一個JPanel,將JLabel添加到面板,並將面板放置在北面。

現在你需要一個北面板的佈局。一個BoxLayout的將工作

northPanel.add(Box.createHorizontalGlue()); 
northPanel.add(label); 
+1

BorderLayout是頂級容器的默認佈局。 – camickr 2011-05-01 20:59:31

+0

此外,「remove」和「setLayout」已被覆蓋,以便根據需要轉發到「contentPane」。「 - [將組件添加到內容窗格](http://download.oracle.com/javase/tutorial/ uiswing /組件/ toplevel.html#的contentPane)。 – trashgod 2011-05-01 21:58:32

8

在上面的代碼中,我通過setBound設置居民點,但它不工作。

有沒有必要這樣做。你不應該使用setBounds(...)。使用佈局管理器:

JLabel label = new JLabel("Some Text"); 
label.setHorizontalAlignment(JLabel.RIGHT); 
frame.add(label, BorderLayout.NORTH); 
+0

真棒:)這幫了我:D – 2014-05-19 07:28:28

1

一種可能性與GridBagLayout的:

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

public class MyPanel extends JPanel { 

    public MyPanel() { 
     setLayout(new GridBagLayout()); 
     add(new JLabel("TOP RIGHT"), new GridBagConstraints(
       0, // gridx 
       0, // gridy 
       1, // gridwidth 
       1, // gridheight 
       1, // weightx 
       1, // weighty 
       GridBagConstraints.NORTHEAST, // anchor <------------ 
       GridBagConstraints.NONE, // fill 
       new Insets(0, // inset top 
       0, // inset left 
       0, // inset bottom 
       0), // inset right 
       0, // ipadx 
       0)); // ipady 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setResizable(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(new MyPanel()); 
     frame.setSize(400, 400); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

薩科

相關問題