2013-04-08 66 views
1

在許多應用程序(例如Google Chrome)中,標籤的標題右側有一個「x」,這會在單擊時關閉選項卡。我打算在Swing應用程序中製作類似的東西。我發現這topic並試圖遵循的建議。然而,似乎該方法在標籤內放置了一個按鈕,而不是其標頭。這裏是我的代碼:JTabbedPane標題上的關閉按鈕

private void addCloseBtn(String title){ 
    JPanel btnPane = new JPanel(new GridBagLayout()); 
    btnPane.setOpaque(false); 
    btnPane.setSize(new Dimension(15, 15)); 

    JButton btn = new JButton("X"); 
    btn.setPreferredSize(new Dimension(12, 12)); 
    btn.setMargin(new Insets(0, 0, 0, 0)); 
    btn.setFont(new Font("Dialog", 1, 9)); 

    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridx = 0; 
    gbc.gridy = 0; 
    gbc.weightx = 1; 

    btnPane.add(btn, gbc); 
    contentTabs.setComponentAt(contentTabs.indexOfTab(title), btn); 
} 

contentTabs是我架的私人classfield。

btnPane涵蓋整個選項卡,這是無用的。我能做些什麼將它放在標籤的標題上或至少在標籤的右上角?最後爲什麼btn.setSize()方法不起作用,btn.setPreferredSize()呢?

在此先感謝。

回答

0

感謝分享這個話題!它對我非常有幫助。

,我認爲你是錯在這條線:

btnPane.add(BTN,GBC);

在此之前,你需要把標題放在網格中,然後你可以把你的按鈕。 也許你需要做到這一點,喜歡在鏈接代碼,您與我們分享:

btnPane.add(「你的標題」,GBC);

,你遞增GBC性質後:

gbc.gridx ++; gbc.weightx = 0; 然後這個 btnPane.add(btn,gbc);