package combo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.plaf.basic.BasicComboBoxUI;
import javax.swing.plaf.basic.BasicArrowButton;
class Testing extends JFrame
{
String cities[] = {"London","Madrid","New York","Rome","Sydney"};
JComboBox cbo = new JComboBox(cities);
public Testing()
{
setLocation(400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cbo.setEditable(true);
cbo.setUI(new MyUI());
JPanel jp = new JPanel();
jp.add(cbo);
getContentPane().add(jp);
pack();
}
class MyUI extends BasicComboBoxUI
{
public MyUI()
{
super();
cbo.setBackground(Color.BLUE);
cbo.setForeground(Color.YELLOW);
}
protected ComboBoxEditor createEditor()
{
ComboBoxEditor cbe = super.createEditor();
cbe.getEditorComponent().setBackground(Color.BLACK);
cbe.getEditorComponent().setForeground(Color.GREEN);
return cbe;
}
protected JButton createArrowButton()
{
return new MyBasicArrowButton(BasicArrowButton.NORTH,
UIManager.getColor("ComboBox.buttonBackground"),
UIManager.getColor("ComboBox.buttonShadow"),
UIManager.getColor("ComboBox.buttonDarkShadow"),
UIManager.getColor("ComboBox.buttonHighlight"));
}
}
public static void main(String[] args){new Testing().setVisible(true);}
}
class MyBasicArrowButton extends BasicArrowButton
{
public MyBasicArrowButton(int direction)
{
super(direction);
}
public MyBasicArrowButton(int direction,Color background,Color shadow,Color darkShadow,Color highlight)
{
super(direction,background,shadow,darkShadow,highlight);
setBackground(Color.BLUE);
setForeground(Color.BLACK);
}
public void paintTriangle(Graphics g,int x,int y,int size,int direction,boolean isEnabled)
{
Color oldColor = g.getColor();
int mid, i, j;
j = 0;
size = Math.max(size, 2);
mid = (size / 2) - 1;
g.translate(x, y);
g.setColor(Color.RED);
j = 0;
for(i = size-1; i >= 0; i--)
{
g.drawLine(mid-i, j, mid+i, j);
j++;
}
g.translate(-x, -y);
g.setColor(oldColor);
}
}