java中选择框,下拉列表可触发什么事件,文本框却不能

 我来答
DoramiHe
2018-10-26 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59543
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部

需要的组件:

下拉菜单 是    JComboBox组件

文本框   是   JTextField组件

设置下拉菜单的内容

常用的主要有三种方法

使用添加模型的方式,来添加内容

JComboBox jcb = new JComboBox();
jcb.setModel(new DefaultComboBoxModel<String>(new String[] {"一","二"}))

使用数组参数的构造器,来添加内容

String[] ss = {"选项一","选项二"};
JComboBox jcb = new JComboBox(ss);

3.  使用链表参数的构造器,来添加内容

Vector<String> ve = new Vector<String>();
ve.add("选项一");ve.add("选项二");
JComboBox jcb = new JComboBox(ve); //把单链表作为参数,来构造一个下拉菜单

事件响应器的设置

当鼠标选择菜单的选项后, 会触发一个事件ActionEvent,  该事件的处理代码里, 可以实现把选择的值添加到文本框.

需要给JComboBox 添加 一个ActionListener  就能实现对事件的响应

效果图

参考代码如下 jdk 1.8

import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;

public class JCBDemo extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
//组件的定义
private final JTextField jtf1;
private final JTextField jtf2;
private final JTextField jtf3;
private final JComboBox<String> jcb2;
private final JComboBox<String> jcb1;
private final JComboBox<String> jcb3;
public static void main(String[] args) {
new JCBDemo().setVisible(true);
}

public JCBDemo() {
setLayout(new GridLayout(3, 3, 0, 0));
//给JComboBox 添加数据的方式一 setModel的方法
JLabel jl1 = new JLabel("选择你喜欢的水果");
jcb1 = new JComboBox<String>();
jcb1.setModel(new DefaultComboBoxModel<String>(new String[] { "苹果", "鸭梨", "香蕉", "山楂", "蜜桃" }));
jtf1 = new JTextField();
jtf1.setColumns(10);
jtf1.setText((String) jcb1.getSelectedItem());//设置文本框的值
//给JComboBox 添加数据的方式二  使用带数组作为参数的构造方法
JLabel jl2 = new JLabel("选择你喜欢的电影");
String[] move = { "英雄本色", "神奇四侠", "复仇者联盟" };
jcb2 = new JComboBox<String>(move);
jcb2.addItem("星球大战");
jtf2 = new JTextField();
jtf2.setText((String) jcb2.getSelectedItem());
jtf2.setColumns(10);
//给JComboBox 添加数据的方式三  使用带Vector链表作为参数的构造方法
JLabel jl3 = new JLabel("选择你喜欢的书籍");
Vector<String> list = new Vector<String>();
list.add("货币战争");
list.add("格林童话");
jcb3 = new JComboBox<String>(list);
jtf3 = new JTextField();
jtf3.setColumns(10);
jtf3.setText((String) jcb3.getSelectedItem());

add(jl1);add(jcb1);add(jtf1);
add(jl2);add(jcb2);add(jtf2);
add(jl3);add(jcb3);add(jtf3);
jcb1.setActionCommand("1");//设置动作命令
jcb1.addActionListener(this);//设置事件响应器
jcb2.setActionCommand("2");
jcb2.addActionListener(this);
jcb3.setActionCommand("3");
jcb3.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(350, 139);//设置窗口大小
setLocationRelativeTo(null);//设置窗口居中
setTitle("下拉菜单示范");
}

public void actionPerformed(ActionEvent e) {//当鼠标选择下拉菜单的值时
String comd =e.getActionCommand();//得到动作命令
if(comd.equals("1")){
jtf1.setText((String) jcb1.getSelectedItem());//设置文本框的内容
}else if(comd.equals("2")){
jtf2.setText((String) jcb2.getSelectedItem());
}else if(comd.equals("3")){
jtf3.setText((String) jcb3.getSelectedItem());
}
}
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式