JComboBox在选择之后整个方框都会变成灰色,这一点在开发自己的界面,完全不能忍。
下面贴一下我在另外一个博客看到的解决办法,隐藏得比较深,希望能给以后遇到类似的人一些指导。传送门 点击打开链接
解决的思路就是:拿到JcomboBox的editor,然后改变JTextField的背景颜色。
private void disableFocusBackground(javax.swing.JComboBox combo)
{
if (combo == null)
{
return;
}
java.awt.Component comp = combo.getEditor().getEditorComponent();
if (comp instanceof javax.swing.JTextField)
{
javax.swing.JTextField field = (javax.swing.JTextField) comp;
field.setEditable(false);
field.setSelectionColor(field.getBackground()/* java.awt.Color.WHITE */);
combo.setEditable(true);
}
}
传入JComboBox即可。
下面简单介绍下怎么替换JComboBox丑陋的滑动条
新建一个类继承BasicScrollBarUI
package net.java.sip.communicator.impl.gui.message.yjm;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JScrollBar;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicScrollBarUI;
public class CBScrollBarUI extends BasicScrollBarUI
{
public Dimension getPreferredSize(JComponent c)
{
return new Dimension(16, 16);
}
// 重绘滚动条的滑块
public void paintThumb(