我有一个现有的JComboBox对象.我可以使用内部方法修改其许多属性.但是,我找不到类似的方法来自定义弹出窗口的外观 - 特别是弹出窗口的背景颜色.我有一个现有的对象,所以我希望使用它现有的方法/属性,而不是写一个专用的类.这可能吗?
注意:这个问题是不是与以上相同的链接的问题(不正确地指出,这个问题已经有答案):这个问题问了一下所选项目的bgcolor(不以组合框的编辑框); 我问的是弹出框的bgcolor.
我正在编写JFrame表单中的可编辑组合框,但我想改变背景颜色.
程序如何工作:如果我点击"按"按钮,那么组合框的背景需要变成黑色.
我试过了:
1.
cbo.setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情
2
cbo.getEditor().getEditorComponent().setBackground(Color.BLACK);
((JTextField) cbo.getEditor().getEditorComponent()).setOpaque(true);
Run Code Online (Sandbox Code Playgroud)
做这个:
代码示例:
public class NewJFrame extends javax.swing.JFrame {
private JComboBox cboCategorie;
public NewJFrame() {
initComponents();
cboCategorie = new JComboBox();
cboCategorie.setBounds(10, 10, 250, 26);
cboCategorie.setVisible(true);
cboCategorie.setEditable(true);
this.add(cboCategorie);
}
private void pressActionPerformed(java.awt.event.ActionEvent evt) {
cboCategorie.getEditor().getEditorComponent().setBackground(Color.BLACK);
((JTextField) cboCategorie.getEditor().getEditorComponent()).setOpaque(true);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Java JDK7
任何sugestions?
我正在使用 Swing 编写 GUI。我有一个JComboBox
使用 aListCellRenderer
和 a编写的自定义BasicComboBoxEditor
。
在我的getListCellRendererComponent()
方法中,我根据项目是否被“选择”(鼠标悬停在上面)来更改列表的颜色,这很好,但我不希望选择在做出选择后更改背景颜色,目前正在这样做。
第一张图片显示了选择之前的界面外观,第二张图片显示了选择之后的界面外观。
如何将“选择”的背景更改为“stockColor”?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.plaf.basic.BasicComboBoxEditor;
public class TFComboBox extends JComboBox{
public static void main(String[] args){
createAndShowGUI();
}
public static void createAndShowGUI(){
JFrame frame = new JFrame("MCVE");
JPanel pane = new JPanel(new BorderLayout());
TFComboBox cb = new …
Run Code Online (Sandbox Code Playgroud)