作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过扩展 BasicComboBoxUI 类来更改 JComboBox 组件的外观。问题是当我使用扩展的 MyComboBoxUI 类时,组合框停止正常工作。
这个 SSCCE 证明了我的问题。第一个组合框显示第二个组合框的选中项,第一个组合框没有绘制箭头按钮,无法选择项。
注意:我以这种方式更改 JButton 组件没有问题。
主类:
import javax.swing.JFrame;
import javax.swing.UIManager;
public class Main {
public static void main(String[] args) {
UIManager.put("ComboBoxUI", "MyComboBoxUI");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
ContentPane contentPane = new ContentPane();
frame.setContentPane(contentPane);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
ContenPane 类:
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JPanel;
public class ContentPane extends JPanel {
public ContentPane() {
setLayout(new FlowLayout());
JComboBox<String> firstComboBox = new JComboBox<>();
firstComboBox.addItem("firstComboBox - 1. item");
firstComboBox.addItem("firstComboBox - 2. item");
firstComboBox.addItem("firstComboBox - 3. item");
add(firstComboBox);
JComboBox<String> secondComboBox = new JComboBox<>();
secondComboBox.addItem("secondComboBox - 1.item");
secondComboBox.addItem("secondComboBox - 2. item");
secondComboBox.addItem("secondComboBox - 3. item");
add(secondComboBox);
}
}
MyComboBoxUI 类:
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicComboBoxUI;
public class MyComboBoxUI extends BasicComboBoxUI {
private static MyComboBoxUI myComboBoxUI = new MyComboBoxUI();
public static ComponentUI createUI(JComponent component) {
return myComboBoxUI;
}
}
最佳答案
我想你想要:
return new MyComboBoxUI();
当你有一个静态变量时,这意味着每个组合框将共享相同的 UI 实例。
关于java - 使用自定义 ComboBoxUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522219/
我试图通过扩展 BasicComboBoxUI 类来更改 JComboBox 组件的外观。问题是当我使用扩展的 MyComboBoxUI 类时,组合框停止正常工作。 这个 SSCCE 证明了我的问题。
我是一名优秀的程序员,十分优秀!