使用 Sea Glass 外观自定义 JPanel
Customizing JPanel with Sea Glass Look and Feel
我有一个 JFrame
和一个 JPanel
。我已将我的 JPanel
添加到我的 JFrame
中。我正在使用 Sea Glass 外观和感觉。我的 JPanel
有一个标题和一个边框,通过以下代码创建:panel.setBorder(BorderFactory.createTitledBorder("Titled Panel"));
问题是当我 运行 我的程序使用 Sea Glass Look and Feel 时,边框不显示;但是当我禁用它时,边框将显示为我想要的。
这是我的代码:
import com.seaglasslookandfeel.*;
public class SeaGlassLF extends JFrame {
SeaGlassLF() {
this.setPreferredSize(new java.awt.Dimension(300, 300));
this.setSize(300, 300);
this.setLayout(new java.awt.BorderLayout());
this.setVisible(true);
JPanel panel = new JPanel();
panel.setPreferredSize(new java.awt.Dimension(200, 200));
panel.add(new javax.swing.JButton("Click Me"));
panel.setBorder(BorderFactory.createTitledBorder("Titled Panel"));
this.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager
.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
SeaGlassLF sg = new SeaGlassLF();
}
});
}
}
Qsn.可能是什么原因,我们如何解决这个问题?
下面是显示程序输出的图像。
- 具有 NO Sea Glass 外观和感觉(边框可用 - 由红色箭头指向)。
- 具有 Sea Glass 外观和感觉(无可用边框)。
好吧,这是一种相当蛮力的方法:
UIManager.getDefaults().put("TitledBorder.border", BorderFactory.createLineBorder(Color.black));
但我确信(我希望!)有更优雅的解决方案。
每个外观都可以设置这些值。我想这种外观的作者已经决定内衬边框不符合他们的风格,所以隐藏了它们。
在 Seaglas L&F 中需要覆盖 titlePossition、-
的位置
例如代码行
.
panel.setBorder(BorderFactory.createTitledBorder(null,
"Titled Panel", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.TOP, new java.awt.Font("Tahoma", 1, 12)));
生成我(通过使用 seaglasslookandfeel-0.1.7.3.jar)这个
.
我有一个 JFrame
和一个 JPanel
。我已将我的 JPanel
添加到我的 JFrame
中。我正在使用 Sea Glass 外观和感觉。我的 JPanel
有一个标题和一个边框,通过以下代码创建:panel.setBorder(BorderFactory.createTitledBorder("Titled Panel"));
问题是当我 运行 我的程序使用 Sea Glass Look and Feel 时,边框不显示;但是当我禁用它时,边框将显示为我想要的。 这是我的代码:
import com.seaglasslookandfeel.*;
public class SeaGlassLF extends JFrame {
SeaGlassLF() {
this.setPreferredSize(new java.awt.Dimension(300, 300));
this.setSize(300, 300);
this.setLayout(new java.awt.BorderLayout());
this.setVisible(true);
JPanel panel = new JPanel();
panel.setPreferredSize(new java.awt.Dimension(200, 200));
panel.add(new javax.swing.JButton("Click Me"));
panel.setBorder(BorderFactory.createTitledBorder("Titled Panel"));
this.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager
.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
SeaGlassLF sg = new SeaGlassLF();
}
});
}
}
Qsn.可能是什么原因,我们如何解决这个问题?
下面是显示程序输出的图像。
- 具有 NO Sea Glass 外观和感觉(边框可用 - 由红色箭头指向)。
- 具有 Sea Glass 外观和感觉(无可用边框)。
好吧,这是一种相当蛮力的方法:
UIManager.getDefaults().put("TitledBorder.border", BorderFactory.createLineBorder(Color.black));
但我确信(我希望!)有更优雅的解决方案。
每个外观都可以设置这些值。我想这种外观的作者已经决定内衬边框不符合他们的风格,所以隐藏了它们。
在 Seaglas L&F 中需要覆盖 titlePossition、-
的位置
例如代码行
.
panel.setBorder(BorderFactory.createTitledBorder(null,
"Titled Panel", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.TOP, new java.awt.Font("Tahoma", 1, 12)));
生成我(通过使用 seaglasslookandfeel-0.1.7.3.jar)这个
.