下拉框(JComboBox
)
- 代码部分
package top.linksinke.test;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
/**
* JComboBox 下拉框的使用<br/>
* create by LINKSINKE on 2020/2/29
*/
public class JComboBoxTest extends JFrame {
public JComboBoxTest() {
// 设置close按钮的操作(关闭窗口并停止程序运行)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口默认打开的位置和大小
this.setBounds(20, 20, 300, 200);
// 获取容器对象
Container ctainer = this.getContentPane();
// 布局方式为网格布局,2行2列,行和列的间距都是10
ctainer.setLayout(new GridLayout(3, 2, 10, 10));
// 年龄,下拉框中的范围:1~100
JLabel lbAge = new JLabel("年龄:");// 创建一个文本标签
final JComboBox combo1 = new JComboBox();
combo1.addItem("--请选择--");
for (int i = 1; i <= 100; i++) {
combo1.addItem(i + "岁");
}
/**
* 索引从0开始,第一个下拉框的值为“请选择”,选择18岁索引就是18
*/
combo1.setSelectedIndex(18);
// 科目, 下拉框中的范围:"语文", "数学", "英语", "化学"
JLabel lbSubject = new JLabel("学习科目:");// 创建一个文本标签
final JComboBox combo2 = new JComboBox();
String sbArr[] = { "语文", "数学", "英语", "化学" };
ComboBoxModel model = new DefaultComboBoxModel(sbArr);// 创建下拉框数据模型对象
combo2.setModel(model);// 给下拉框combo2设置对应的数据模型model对象
/**
* 设置是否可以编辑<br/>
* true为可编辑,false为不可编辑
*/
combo2.setEditable(true);
/**
* 点击按钮名称为“获取选中值”会将选中的下拉框里面的值进行弹窗显示,显示包括选中的值内容和对应的索引
*/
JButton btn = new JButton("获取选中的值");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(JComboBoxTest.this,
"所选中的年龄为:" + combo1.getSelectedItem() + ",索引是" + combo1.getSelectedIndex() + "\n所选中的科目为:"
+ combo2.getSelectedItem() + ",索引是" + combo2.getSelectedIndex());
}
});
// 向容器中添加文本标签,下拉框,按钮组件
ctainer.add(lbAge);
ctainer.add(combo1);
ctainer.add(lbSubject);
ctainer.add(combo2);
ctainer.add(btn);
// 设置窗口为显示状态
this.setVisible(true);
}
public static void main(String args[]) {
JFrame jframe = new JComboBoxTest();
}
}
- 代码效果图
列表框(JList
)
- 代码部分
package top.linksinke.test;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
/**
* JList 列表框的使用 <br/>
* create by LINKSINKE on 2020/2/29
*/
public class JListTest extends JFrame {
public JListTest() {
// 设置close按钮的操作(关闭窗口并停止程序的运行)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口默认打开的位置和大小
this.setBounds(20, 20, 300, 300);
// 获取容器对象
Container ctainer = this.getContentPane();
// 设置布局方式为绝对布局
ctainer.setLayout(null);
// 1、爱吃的鱼
String[] fish = { "鲢鱼", "鳙鱼", "草鱼", "鲤鱼", "鲫鱼", "八爪鱼", "泥鳅", "黄辣丁", "鲶鱼" };
final JList jlist1 = new JList(fish);
/**
* 设置选择模式 <br/>
* SINGLE_SELECTION: 单选模式(只能选择一个)<br/>
* SINGLE_INTERVAL_SELECTION: 多选模式(但是只能选择邻居元素) <br/>
* MULTIPLE_INTERVAL_SELECTION: 多选模式(可以选择多个,无邻居之分)
*/
jlist1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
JScrollPane sp1 = new JScrollPane(jlist1);
// 将位于x=50,y=0,长为200,宽为100带标题边框显示的滚动面板添加到容器中
sp1.setBounds(50, 0, 200, 100);
sp1.setBorder(BorderFactory.createTitledBorder("爱吃的鱼"));
ctainer.add(sp1);
// 2、爱喝的酒
String[] wine = { "啤酒", "白酒", "葡萄酒", "鸡尾酒", "药酒" };
final JList jlist2 = new JList();
/**
* 可以使用这个方式来添加列表框的内容:<br/>
* ComboBoxModel model = new DefaultComboBoxModel(wine);
* jlist2.setModel(model); 也可以使用以下方式来添加列表框的内容:
*/
DefaultListModel model = new DefaultListModel(); // 创建列表框的数据模型
for (int i = 0; i < wine.length; i++) {
model.addElement(wine[i]);// 给列表框添加元素
}
jlist2.setModel(model);// 将列表框jlist2设置一个数据模型model
/**
* 设置选择模式 <br/>
* SINGLE_SELECTION: 单选模式(只能选择一个)<br/>
* SINGLE_INTERVAL_SELECTION: 多选模式(但是只能选择邻居元素) <br/>
* MULTIPLE_INTERVAL_SELECTION: 多选模式(可以选择多个,无邻居之分)
*/
jlist2.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
JScrollPane sp2 = new JScrollPane(jlist2);
// 将位于x=50,y=110,长为200,宽为100带标题边框显示的滚动面板添加到容器中
sp2.setBounds(50, 110, 200, 100);
sp2.setBorder(BorderFactory.createTitledBorder("爱喝的酒"));
ctainer.add(sp2);
/**
* 通过按钮来获取列表框中选择的内容
*/
JButton btn = new JButton("我的最爱");
// 设置按钮的文本颜色
btn.setForeground(Color.red);
btn.setBounds(80, 220, 100, 30);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
/**
* 利用格式字符串来美化消息输出<br/>
* %s: 对应的数据类型为字符串类型<br/>
* %d: 对应的数据类型为10进制整数类型
*/
String msg = String.format("爱吃的鱼有:%s,共计:%s条\n爱喝的酒有:%s,共计:%s种",
arrayToString(jlist1.getSelectedValues()), jlist1.getSelectedValues().length,
arrayToString(jlist2.getSelectedValues()), jlist2.getSelectedValues().length);
JOptionPane.showMessageDialog(JListTest.this, msg);
}
});
ctainer.add(btn);
// 设置窗口是否显示 (true为显示窗口,false为不显示窗口)
this.setVisible(true);
}
/**
* 将数组转换为字符串
*
* @param objArray
* 需要格式成字符串的数组
* @return 最后一个“,”不要,也就是从0开始到最后一个不是逗号的开始截取返回字符串
*/
private String arrayToString(Object[] objArray) {
StringBuffer sb = new StringBuffer();
// 数组要是为空的话就直接返回空字符串,否则就继续下面的语句
if (objArray == null || objArray.length == 0)
return "";
for (int i = 0; i < objArray.length; i++) {
sb.append(objArray[i] + " | ");
}
return sb.substring(0, sb.toString().length() - 4);
}
public static void main(String args[]) {
JFrame jframe = new JListTest();
}
}
- 代码效果图