我可以为Java Swing使用CSS吗?

24
有没有一种方法可以在使用Java Swing的应用程序中重用我的CSS?

2
你已经有一个用于其他用途的CSS文件了吗?比如网页?你想要用CSS做什么?只是颜色和字体大小还是布局和行为? - Pål Brattberg
是的,我有一个在我的Web应用程序中使用的CSS文件,但在我的Web应用程序中,我正在使用一个在Swing中开发的小程序。因此,我想知道是否存在重用我的CSS的可能性。 - ricardo
1
可能重复:https://dev59.com/AkjSa4cB1Zd3GeqPDTRz - javascript is future
我不知道我们是否有解析CSS样式的工具,但对于Swing应用程序,我一直在使用Miglayout,它不是CSS的翻译,但它遵循大多数模式。 - Jonatas Emidio
2个回答

10

通常来说,Java Swing并没有将其控件与其展现分离出来的设计,但是有一个名为Jaxx的开源框架可以帮助你实现。使用Jaxx,你可以做类似于这样的事情

<Application title='Calculator'>
  <style source='Calculator.css'/> //your style goes here...
  <script source='Calculator.script'/>
  <Table fill='both' id='table'>
<row>
  <cell columns='4'><JLabel id='display' text='0'/></cell>
</row>

<row>
  <cell columns='2'><JButton id='c' label='C' onActionPerformed='clear()' styleClass='clear'/></cell>      
  <cell><JButton id='ce'     label='CE' onActionPerformed='clearEntry()' styleClass='clear'/></cell>
  <cell><JButton id='equals' label='=' onActionPerformed='equal()' styleClass='operator'/></cell>
</row>

<row>
  <cell><JButton id='d7'   label='7' onActionPerformed='digit(7)' styleClass='digit'/></cell>
  <cell><JButton id='d8'   label='8' onActionPerformed='digit(8)' styleClass='digit'/></cell>
  <cell><JButton id='d9'   label='9' onActionPerformed='digit(9)' styleClass='digit'/></cell>
  <cell><JButton id='plus' label='+' onActionPerformed='add()' styleClass='operator'/></cell>
</row>

<row> 
  <cell><JButton id='d4'       label='4' onActionPerformed='digit(4)'   styleClass='digit'/></cell>
  <cell><JButton id='d5'       label='5' onActionPerformed='digit(5)'   styleClass='digit'/></cell>
  <cell><JButton id='d6'       label='6' onActionPerformed='digit(6)'   styleClass='digit'/></cell>
  <cell><JButton id='subtract' label='-' onActionPerformed='subtract()' styleClass='operator'/></cell>
</row>

<row>
  <cell><JButton id='d1'       label='1' onActionPerformed='digit(1)' styleClass='digit'/></cell>
  <cell><JButton id='d2'       label='2' onActionPerformed='digit(2)' styleClass='digit'/></cell>
  <cell><JButton id='d3'       label='3' onActionPerformed='digit(3)' styleClass='digit'/></cell>
  <cell><JButton id='multiply' label='x' onActionPerformed='multiply()' styleClass='operator'/></cell>
</row>

<row>
  <cell><JButton id='d0'     label='0' onActionPerformed='digit(0)' styleClass='digit'/></cell>
  <cell><JButton id='sign'   label='+/-' onActionPerformed='toggleSign()' styleClass='operator'/></cell>
  <cell><JButton id='dot'    label='.' onActionPerformed='dot()' styleClass='digit'/></cell>
  <cell><JButton id='divide' label='&#x00F7;' onActionPerformed='divide()' styleClass='operator'/></cell>
</row>

然后包含一个CSS文件来为你的组件添加样式:

Application {
    lookAndFeel: system;
}
#display {
    background: #BCE5AD;
    opaque: true;
    horizontalAlignment: right;
    border: {BorderFactory.createBevelBorder(BevelBorder.LOWERED)};
    font-size: 22;
    font-weight: bold;
}

8

http://code.google.com/p/flying-saucer/ Flying Saucer可以将XML或XHTML与符合CSS 2.1标准的样式表相结合,以便通过iText呈现为PDF、图像,并在屏幕上使用Swing或SWT。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接