我有JFrame
和JPanel
。我已将JPanel
添加到JFrame
。我正在使用Sea Glass Look and Feel。我的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。可能是什么原因以及我们如何解决这个问题?
以下是显示程序输出的图像。
答案 0 :(得分:3)
需要覆盖titlePossition的可能性, -
e.g。代码行
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)
答案 1 :(得分:1)
嗯,这是一种相当蛮力的方式:
UIManager.getDefaults().put("TitledBorder.border", BorderFactory.createLineBorder(Color.black));
但我确信(我希望!)有更优雅的解决方案。
每个外观都可以设置这些值。我想这个外观和感觉的作者已经决定,有条纹的边框不适合他们的风格,所以隐藏了它们。