2011-03-03 18 views
5
üzerinde kenar boşluğunu/dolguyu kaldırın

JtabbedPane ve JFrame içerik bölmem arasında ve JTabbedPane ile dahili JPanel arasındaki kenar boşluklarının nasıl kaldırılacağını öğrenmek istiyorum. Kaldırmak istediğim kenar boşluklarını daire içine aldım. yeşil çizgi jtabbedpane içindeki jpanel arasındaki boşluğu göstermek için burada.Java: JTabbedPane

setMargin adlı bir yönteme bakmaya çalıştım ancak JTabbedPane'de yok. Ayrıca farklı düzende (kök içerik paneli, jpanel, vb) Hgap ve Vgap (her ikisi de = 0) işaretliyim.

Herhangi bir öneri kabul edilir. Teşekkürler.

The image is here. Henüz resim yayınlayamıyorum.

+0

olur? Eğer varsa, bize bir link gönderin ve css sorununuzu çözebilirim. – bluefoot

+0

JAVA ...ve bir bağlantı var – florian

cevap

7

Sekmeli bölmedeki bileşenlerin etrafında ne kadar yer olduğuna karar vermenin görünümü ve hissiyatı budur - genellikle bunu, masaüstünüzün varsayılanı ne olursa olsun yapar. JTabbedPane iç bileşenleri etrafında insets ayarlamak için yöntemleri yoktur. tüm sekmeli bölmeler için global

Sen can seti bu (ihtar: MetalLookAndFeel çalışır, muhtemelen, Windows L & F için eser de, muhtemelen GTK veya Nimbus görünüm için değil iş ve hissedeceksiniz hangi BasicLookAndFeel dayanmamaktadır). Bu VM yılında tüm sekmeli bölmeleri görünümünü değiştirecek:

UIManager.getDefaults().put("TabbedPane.contentBorderInsets", new Insets(0,0,0,0)); 
UIManager.getDefaults().put("TabbedPane.tabsOverlapBorder", true); 

za ayr JTabbedPane bir EmptyBorder (0,0,0,0) sahip olduğundan emin olun ve böylece bileşenleri koymak yapmak istiyorum içinde.

bu hedef masaüstünde çalışmıyorsa, alternatifler yerli uygulama bölmeleri sekmeli adresinin sekmeli bölmeleri hakkında

  • sen umursamazsak farklı görünümlü, (nahoş) alternatif yazmaktır kendi TabbedPaneUI
  • Eğer MetalTabbedPaneUI veya bu özelliklere cevap yaptığı diğer bazı UI temsilciye böyle bakmak istiyorum tek JTabbedPane UI temsilci set
+0

Teşekkürler. Çözümünüz en iyi beyaz alandan kurtulmamı sağlıyor. – florian

1

UI öğelerinde kenarlıklar ayarlanarak kenar boşlukları eklenir. JTabbedPane'unuzun sınırının ayarlarına bakın.

+0

Cevabınız için teşekkürler, "doğru" ve "alt" özellikleri için negatif değerler koyarak sınırını kaldırabilirim. Bunu yapmak biraz garip. – florian

4

Sadece aynı sorunu vurdu ve hiçbir şey başkasının komple bir çözüm gibi görünüyordu söyledi, ben bu geldi:

Ancak böylece muhtemelen yapıyor, paintContentBorder yöntemi geçersiz olmadan aynı şekilde çalışır
import javax.swing.plaf.basic.BasicTabbedPaneUI; 

    tabbedPane.setUI(new BasicTabbedPaneUI() { 
     private final Insets borderInsets = new Insets(0, 0, 0, 0); 
     @Override 
     protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) { 
     } 
     @Override 
     protected Insets getContentBorderInsets(int tabPlacement) { 
      return borderInsets; 
     } 
    }); 

yapar Standartlar, bir dizi başka yönteme delege edildiklerinden, yeniden boyutlandırma veya benzerleri sırasında biraz daha verimli. Java 7 U07 ile WindowMaker Mac Java 6 U37 ile Mac OS X 10.6.7 ve Windows 7'de Linux için Oracle Java 6 U43 üzerinde test

, umarım bu birisi :-) canlı bir örnek var

+0

Bu, kenarlığı kaldırmak için çalışırken, gerçek sekmelerdeki UI'yi de değiştirir. –