我正在编写一个 Java 应用程序,并使用 Swing 为其提供自定义的外观和感觉UIManager。有一个名为的方法UIManager.getSystemLookAndFeelClassName()返回系统的默认外观。我想知道当没有检测到系统外观时,它默认返回什么外观和感觉,是 Java 本身的 Metal 外观吗?
我刚到这个页面.
它既简单易用又看起来很棒.
我正在寻找更多这样的例子.
我有一个扩展 JButton 的类,因为我使用的自定义外观会忽略 isOpaque() 调用。我的意思是,即使我在它和所有父面板上调用了 setOpaque (false),也会呈现按钮的背景。我已经确认这是公司设计人员的 LAF 的一个问题,所以我只能扩展课程。所以我的问题是,如何实现paint() 方法来不呈现背景而只呈现按钮图标?干杯
已解决:如果有人感兴趣,我想要的答案是使用 button.setContentAreaFilled(false);
我在我的java应用程序中设置了外观和感觉nimbus,但我不知道为什么视图总是从一帧到另一帧不同.在一个框架中,我得到了非常好的蓝色雨云,而在其他框架中我得到了灰色的那个,但这不合适.而另一个没有显示为使用灵气的外观和感觉.这是我在main中使用的代码
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
// If Nimbus is not available, you can set the GUI to another look and feel.
}
Run Code Online (Sandbox Code Playgroud)
我也导入
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
Run Code Online (Sandbox Code Playgroud)
我希望有人可以帮助我,谢谢.
有一些标准的方式来设置JFame(Buttons等)的样式,类似于使用.Properties文件进行国际化的方式吗?
我使用swing + nimbus来设计我的组件.我想用"Nimbus.Overrides"在运行时更改组件的样式.
private void SetExceptionState() {
//password.setBackground(new Color(200,0,0,120));
UIDefaults overrides = new UIDefaults();
overrides.put("PasswordField.background", Color.red);
password.putClientProperty("Nimbus.Overrides", overrides);
password.revalidate();
password.updateUI();
}
private void ResetExceptionState() {
//password.setBackground(Color.white);
UIDefaults overrides = new UIDefaults();
overrides.put("PasswordField.background", Color.white);
password.putClientProperty("Nimbus.Overrides", overrides);
}
Run Code Online (Sandbox Code Playgroud)
我第一次设置覆盖,让我们说它使用SetExceptionState()方法.我得到一个红色背景.我第二次使用这个没有任何反应.看起来,覆盖只被评估一次.
我想要的是引入一个新的密码字段状态和它的风格不同.有没有可能这样做?
最好的祝福,
Yggdrasil的
我有一个装饰JFrame.我需要关闭按钮并最小化按钮.我该怎么办?
这是我的代码片段:
public Startup()
{
setTitle("STARTUP");
setSize(800,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setUndecorated(true);
setLocationRelativeTo(null);
setVisible(true);
}
Run Code Online (Sandbox Code Playgroud) 我改Nimbus的外观和感觉,因为它是描述在这里.
它工作正常,除了JCheckBoxMenuItems,其中校验方块消失了.选择颜色也不正确.
这是带有JCheckBoxMenuItems的popupmenu的代码:
public class FilterByNodeUI
{
private JPopupMenu filterMenu;
private PopupMenuButton menu;
private JMenu eventLogFilters, commandFilters;
private JCheckBoxMenuItem[] commandsPeriodicalItems, commandsPeriodicalAllPortsItems;
private JCheckBoxMenuItem alarm, connection, standard;
private String id;
public FilterByNodeUI(Node node)
{
this.id = node.getIp();
filterMenu = new JPopupMenu();
eventLogFilter();
int cpNbr = node.getCommands().getCommandsPeriodical().size();
int cpapNbr = node.getCommands().getCommandsPeriodicalAllPorts().size();
commandsPeriodicalItems = new JCheckBoxMenuItem[cpNbr];
commandsPeriodicalAllPortsItems = new JCheckBoxMenuItem[cpapNbr];
commandFilters = new JMenu("Commands");
for(int i = 0; i < cpNbr; i++)
{
commandsPeriodicalItems[i] = menuItemFactory(node.getCommands().getCommandsPeriodical().get(i).getCommand());
commandFilters.add(commandsPeriodicalItems[i]);
}
commandFilters.addSeparator();
for(int i …Run Code Online (Sandbox Code Playgroud) 我正在创建一个音乐播放器程序。
我已经使用创建了搜索栏JSlider
代码:
JSlider seek = new JSlider(JProgressBar.HORIZONTAL);
seek.setOpaque(true);
seek.setMajorTickSpacing(0);
seek.setMinorTickSpacing(0);
seek.setBackground(Color.DARK_GRAY);
seek.setSize(100, 13);
seek.setLocation(6, 30);
Run Code Online (Sandbox Code Playgroud)
目前,它看起来像这样:
我只能改变JSlider使用setBackground()方法的背景。
我不知道如何更改拇指颜色、拇指形状、轨道颜色等。
我希望我的搜索栏看起来像这样:
我怎样才能实现这个目标?
如果 不可能JSlider,是否可以创建一个JProgressBar具有可滑动拇指的?
ubuntu使用什么外观(11或更高)?我想在将在Windows上运行的swing应用程序中使用相同的内容.我在哪里可以找到那个lnf的罐子?
在各种 Pluggable Look & Feel 实现中,Swing 文本字段在可编辑、不可编辑和禁用时是什么样子的?
下面是在 Windows 和 Apple OS X 上看到的 PLAF 的答案。我也非常感谢看到其他 PLAF 的外观(例如 *nix 上的 GTK)。