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 + "]";
			
		}
	}

}

运行结果:

另选一个:

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码生成一个带有下拉列表框、多选框、确定按钮的Java Swing界面: ``` import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MyFrame extends JFrame { private JComboBox<String> comboBox; private JCheckBox checkBox1; private JCheckBox checkBox2; private JButton button; public MyFrame() { super("My Frame"); // 创建下拉列表框 comboBox = new JComboBox<>(new String[]{"选项1", "选项2", "选项3"}); comboBox.setBounds(50, 50, 150, 30); add(comboBox); // 创建多选框 checkBox1 = new JCheckBox("多选框1"); checkBox1.setBounds(50, 100, 100, 30); add(checkBox1); checkBox2 = new JCheckBox("多选框2"); checkBox2.setBounds(150, 100, 100, 30); add(checkBox2); // 创建确定按钮 button = new JButton("确定"); button.setBounds(100, 150, 100, 30); add(button); // 添加按钮点击事件处理 button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 打印选择结果 System.out.println("选中的选项:" + comboBox.getSelectedItem()); System.out.println("多选框1是否选中:" + checkBox1.isSelected()); System.out.println("多选框2是否选中:" + checkBox2.isSelected()); } }); // 设置窗口大小和关闭方式 setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(null); setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 运行上述代码,可以看到生成的界面包含一个下拉列表框、两个多选框、一个确定按钮。用户可以选择下拉列表框中的选项,勾选多选框,点击确定按钮后,程序会打印用户的选择结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值