java中获取下拉框的值是可以使用request.getParameter(下拉框定义的名称)方法来获取。
创新互联公司专注于郁南企业网站建设,成都响应式网站建设公司,商城网站建设。郁南网站建设公司,为郁南等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
具体代码如下:
Servlet类:
public class DemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getParameter("name"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
页面:
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
html
head
titleDemo/title
meta http-equiv="pragma" content="no-cache"
meta http-equiv="cache-control" content="no-cache"
meta http-equiv="expires" content="0"
meta http-equiv="keywords" content="keyword1,keyword2,keyword3"
meta http-equiv="description" content="This is my page"
/head
body
form action="demoServlet" method="post"
select name="name"
option value="num1"选项一/option
option value="num2"选项二/option
option value="num3"选项三/option
/select
input type="submit" value="提交"/
/form
/body
/html
其中,点击页面的提交按钮之后,会去调用DemoServlet的doPost方法执行对应的操作,输出选择的下拉框的值。
这里需要注意的是request.getParameter的参数必须和select name="name"中的name值一致。
DateDropFrame extends JFrame
给year和month添加一个ItemListener来实时计算指定年和月中有多少天就可以了.
代码是用Swing写的,不过看你的图,不像是Swing界面.
/**
* Create the frame.
*/
public DateDropFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));
final JComboBox year = new JComboBox();
year.setModel(new DefaultComboBoxModel(getModel(start, end)));
contentPane.add(year);
final JComboBox month = new JComboBox();
month.setModel(new DefaultComboBoxModel(getModel(1, 12)));
contentPane.add(month);
final JComboBox day = new JComboBox();
contentPane.add(day);
year.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setDay(year, month, day);
}
});
month.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
setDay(year, month, day);
}
});
setDay(year, month, day);
setContentPane(contentPane);
}
/**
* calculate days in select month year
*/
private void setDay(JComboBox year, JComboBox month, JComboBox day) {
int y = Integer.parseInt((String) year.getSelectedItem());
int m = Integer.parseInt((String) month.getSelectedItem());
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, y);
c.set(Calendar.MONTH, m - 1);
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
day.setModel(new DefaultComboBoxModel(getModel(1, days)));
}
/**
* get String array [start, end]
*/
private String[] getModel(int start, int end) {
String[] m = new String[end - start + 1];
for (int i = 0; i m.length; i++) {
m[i] = String.valueOf(i + start);
}
return m;
}
效果图
参考代码
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
public class Demo extends JFrame implements ActionListener {
JButton btn;
VectorString vector=new VectorString();
JComboBoxString jcb;
public Demo() {
vector.add("公斤");
vector.add("每个");
vector.add("每盒");
JLabel jl = new JLabel("单位");
jcb = new JComboBoxString(vector);//可以传入一个数组或者一个Vector链表,对下拉框进行初始化
btn=new JButton("获取下拉框的文字");
btn.addActionListener(this);
JPanel jp = new JPanel();
jp.add(jl);
jp.add(jcb);
jp.add(btn);
add(jp);
setSize(300, 200);
setLocationRelativeTo(null);
setTitle("下拉框Demo");
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Demo().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(this, (String)jcb.getSelectedItem());
}
}
在一个下拉列表框(我假设是JComboBox)上面加上ItemListener,来让另一个改变选择。
我试了一下,效果还行。
当然,Layout Manager我还是推荐MigLayout,强大。自带的BorderLayout还是粗糙了一点。
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
public class CombineJComboBox extends JFrame {
//定义为域,让内部类可以直接使用
private JComboBoxString comboAirports;
private JComboBoxString comboCities;
public CombineJComboBox() {
begin();
}
private void begin() {
try {
UIManager.setLookAndFeel(new WindowsLookAndFeel());
} catch (UnsupportedLookAndFeelException e1) {
e1.printStackTrace();
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
//第一个下拉列表:机场
comboAirports =
new JComboBoxString(new String[]{"选个机场吧?", "双流机场", "通州机场", "虹桥机场", "首都国际机场", "浦东国际机场"});
comboAirports.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
//如果是选中选项动作
if (e.getStateChange() == ItemEvent.SELECTED) {
if (e.getItem().toString().equals("虹桥机场") ||
e.getItem().toString().equals("浦东国际机场")) {
comboCities.setSelectedItem("上海");
} else if (e.getItem().toString().equals("通州机场") ||
e.getItem().toString().equals("首都国际机场")) {
comboCities.setSelectedItem("北京");
} else if (e.getItem().toString().equals("双流机场")) {
comboCities.setSelectedItem("成都");//我还没有去过成都,不知道为什么想到机场就想到了这个名字。
} else {
comboCities.setSelectedIndex(0); //选中第一个选项。
}
} else if (e.getStateChange() == ItemEvent.DESELECTED){
//不要做任何事。选中一个选项必定导致前面一个选项不被选中。一次选择实际上产生了两个event
}
}
});
comboAirports.setSelectedIndex(0); //初始选择第一个选项
comboAirports.setBounds(0, 0, 150, 30);
add(comboAirports, BorderLayout.WEST);
//第二个下拉列表:城市
comboCities = new JComboBoxString(new String[]{"你想要去哪个城市呢?", "北京", "上海", "成都"});
comboCities.setSelectedIndex(0); //初始选择第一个选项
comboCities.setBounds(0, 0, 150, 30);
add(comboCities, BorderLayout.EAST);
pack();//计算所有component尺寸,妥善安排好,然后压缩到最合适尺寸。
setBounds(0, 0, 300, 100); //重新设置窗口尺寸
setLocationRelativeTo(null); //窗口居中
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
CombineJComboBox frame = new CombineJComboBox();
}
});
}
}