gpt4 book ai didi

java - 更改外观后是否可以保留按钮的边框? (Java Swing )

转载 作者:行者123 更新时间:2023-11-30 03:32:33 24 4
gpt4 key购买 nike

我目前正在开发一个允许用户选择外观和感觉的项目。但是,当用户选择其他外观并将其改回原来的 CrossPlatformLookAndFeel 时,按钮的边框就会消失。

代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class SSCCE {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame();
final JButton button = new JButton("Button");
button.setBorder(LineBorder.createBlackLineBorder());
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(frame);
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(frame);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
});
//
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}

如您所见,单击按钮后边框就会消失。

那么问题来了:改变Look and Feel后边框还能保留吗?我知道边框不会出现在 WindowsLookAndFeel 中,但是在外观和感觉更改回默认边框后是否可以“重新出现”?

最佳答案

上次我检查时,PLAF 中存在多种错误,导致了这些类型的奇怪行为。特别是当从 MetaL LAF 更改时(但也有很大一部分与 Nimbus 有关)。

获取应用程序的唯一可靠方法。更改 PLAF 的方法是:

  • 序列化用户对新 PLAF 的选择(即作为完全限定类名的 String)。
  • 启动一个调用 main(String[]) 的新进程,该进程将检查要使用的新 PLAF 的序列化字符串,并使用它。
  • (可能将当前 GUI 的状态传递给新 GUI。)
  • 关闭当前 GUI。

正如您所看到的,获得“绝对坚如磐石可靠”的 PLAF 更换相当麻烦。

关于java - 更改外观后是否可以保留按钮的边框? (Java Swing ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com