Java Swing做一个简单的下拉列表实现选择颜色改变显示的颜色
用java Swing做一个简单的下拉列表,默认红色,选择颜色时后面字体相应改变
代码:
SwingDemo:
//
//做一个简单的下拉列表控件
//Created by lee_1310 on 2019.03.30 15:17
//CopyRight please @ https://blog.****.net/Lee_1310
//
import javax.swing.JFrame;
public class SwingDemo {
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run()
{
greateGUI();
}
});
}
protected static void greateGUI()
{
//创建frame
myFrame frame = new myFrame("Swing Demo!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口大小
frame.setSize(600,400);
//显示窗口
frame.setVisible(true);
}
}
myFrame类;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class myFrame extends JFrame{
//JComboBox是一个泛型,参数类型是数据项类型
JComboBox<String> colorList = new JComboBox<>();
JLabel sampleText = new JLabel("文本样例 This is a sample");
//构造函数
public myFrame(String title)
{
//继承父类
super(title);
//内容面板
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
//添加控件
contentPane.add(colorList);
contentPane.add(sampleText);
colorList.addItem("红色");
colorList.addItem("黄色");
colorList.addItem("绿色");
updateTextColor();
//下拉列表事件处理
colorList.addActionListener((e)->{
updateTextColor();
});
}
private void updateTextColor()
{
//获取选中的值
String item = (String)colorList.getSelectedItem();
Color color = null;//java.awt包
if(item.equals("红色"))
color = Color.RED;
else if(item.equals("黄色"))
color = Color.YELLOW;
else if(item.equals("绿色"))
color = Color.GREEN;
sampleText.setForeground(color);
}
}
对代码进行一些优化:并用文本英文显示其颜色。
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class myFrame2 extends JFrame{
String strcolor = "red" ;
//JComboBox是一个泛型定义,用于指定Item的数据类型
JComboBox<ListOption> colorList = new JComboBox<>();
JLabel sampleText = new JLabel("This is " + strcolor);
public myFrame2(String title)
{
super(title);
//内容面板
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
//添加控件
contentPane.add(colorList);
contentPane.add(sampleText);
colorList.addItem(new ListOption("红色",Color.RED));
colorList.addItem(new ListOption("黄色",Color.YELLOW));
colorList.addItem(new ListOption("绿色",Color.GREEN));
colorList.addItem(new ListOption("蓝色",Color.BLUE));
updateTextColor();
//下拉列表事件处理
colorList.addActionListener((e)->{
updateTextColor();
});
}
//更新颜色显示
private void updateTextColor()
{
ListOption item = (ListOption)colorList.getSelectedItem();
sampleText.setForeground(item.color);
if(item.text.equals("红色"))
strcolor = "red";
else if(item.text.equals("黄色"))
strcolor = "yellow";
else if(item.text.equals("绿色"))
strcolor = "green";
else if(item.text.equals("蓝色"))
strcolor = "blue";
sampleText.setText("this is " + strcolor);
}
//专门定义一个内部类,表示列表项
public static class ListOption
{
public String text;
public Color color;
//构造方法
public ListOption(String text,Color color)
{
this.text = text;
this.color = color;
}
//重写toString(),用于列表项的显示
@Override
public String toString()
{
return "[" + this.text + "]";
}
}
}
运行结果:
另选一个: