Java Swing做一个简单的下拉列表实现选择颜色改变显示的颜色

用java Swing做一个简单的下拉列表,默认红色,选择颜色时后面字体相应改变

代码:

SwingDemo:

//
//做一个简单的下拉列表控件
//Created by lee_1310 on 2019.03.30 15:17
//CopyRight please @ https://blog.csdn.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 + "]";
			
		}
	}

}

运行结果:

Java Swing做一个简单的下拉列表实现选择颜色改变显示的颜色

另选一个:

Java Swing做一个简单的下拉列表实现选择颜色改变显示的颜色