我無法找到一種方式(是否有?)來格式化JTabbedPane中標籤標題的風格。Groovy SwingBuilder:控制JTabbedPane中標籤標題的風格
我可以更改選項卡窗格的背景顏色(請參見下文),但無法找到設置選項卡標題樣式的方式;我想讓它們變爲粗體或紅色,或者能夠定義標籤寬度,例如,我可以在第一個面板中格式化標籤的樣式。
下面的代碼,主要是由tim_yates啓發(Groovy SwingBuilder : using a scrollpanel to show a list of panels):
import groovy.swing.SwingBuilder
import javax.swing.WindowConstants as WC
import javax.swing.JOptionPane
import javax.swing.JTabbedPane
import javax.swing.JScrollPane
import javax.swing.BoxLayout as BXL
import java.awt.Font
Font font = new Font("Serif", Font.BOLD, 13)
int numPanels = 20
swing = new SwingBuilder()
frame = swing.frame(title:'test', pack:true, visible:true, defaultCloseOperation:WC.DISPOSE_ON_CLOSE) {
tabbedPane(id: 'tabs', tabLayoutPolicy:JTabbedPane.SCROLL_TAB_LAYOUT) {
panel(name: 'Tab 1', background:java.awt.Color.WHITE) {
boxLayout(axis: BXL.Y_AXIS)
panel(alignmentX: 0f, background:java.awt.Color.WHITE){
label ('Label 1', preferredSize: [104, 24]).setFont(font)
label ('Label 2', preferredSize: [104, 24]).setFont(font)
label ('Label 3', preferredSize: [104, 24]).setFont(font)
}
scrollPane(verticalScrollBarPolicy:JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) {
vbox(){
(1..numPanels).each { num ->
def panelID = "panel$num"
def pane = panel(alignmentX:0f, id:panelID, background:java.awt.Color.GREEN) {
label('description')
textField(id: "description$num", text:panelID, columns: 70)
button(id: "buttonpanel$num", text:panelID, actionPerformed:{
swing."$panelID".background = java.awt.Color.RED
})
}
}
}
}
}
panel(name: 'Tab 2', background:java.awt.Color.WHITE) {
textField(text: 'Some text', columns: 15)
scrollPane() {
textArea(text: 'Some text', columns: 15, rows: 4)
}
}
}
boxLayout(axis: BXL.Y_AXIS)
panel(id:'secondPanel', background:java.awt.Color.WHITE){
button('Quit', actionPerformed:{
dispose()
})
}
}
frame.size = [ frame.width, 600 ]
我發現這些鏈接看起來非常困難的(我)在Groovy來實現:
而且在Java文檔不解釋如何做到這一點,我沒有找到使用樣式選項卡的任何實例。
感謝您的幫助。
Regards,
Michel。
PS:Ant的提供了一個鏈接
Groovy SwingBuilder : changing size and/or font of tabs (in jTabbedpane)
一個有趣的文章,但我的問題沒有直接幫助的(最初過於模糊)。
tyvm,蒂姆!就是我在找的東西。 –
在此期間,我嘗試了這種解決方案:tabbedPane(){} .setFont(font),它適用於設置字體樣式,但無法將其擴展爲自定義寬度或顏色 –
而您的解決方案允許更多的靈活性:def tabComponents = [ swing.label(text:'Tab 1',font:font.deriveFont(Font.ITALIC),foreground:java.awt.Color.RED,preferredSize:[104,24]), swing.label(text:' Tab 2',字體:font.deriveFont(20.0f)) ] –