您的位置:首页 > 其它

随机产生多个JCheckBox,并在选择是时。获取jcheckbox的文本

2016-04-21 18:45 423 查看
package com.guan;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
* 此类是当swing界面上有多个随机的JCheckBox时,当选中多个JCheckbox时,怎么样获取选择的JCheckbox文本,当取消
* JCheckbox时,怎么去掉他的文本
* 还有一个收获就是swing布局上的:当父面板是流式布局的时候(FlowLayout),如果子面板是网格布局时候,网格的上下左右的间距
* 能够变得比较小。这对我来说是一个新的发现,以后如果做swing的小程序,就可以尝试在布局中嵌套各种布局,说不定会有新的见解。
* 这个发现拓宽的我的思路。
*
* @author windpower3
*
*/
public class MutiCheckBoxFrm extends JFrame implements ActionListener, ItemListener {
private static Insets insets1 = new Insets(5, 5, 5, 5);
private JPanel refreshPanel;
private JScrollPane scrollPane,scrollPane1;
private JPanel centerPanel;
private String[] str = new String[] { "好汉", "韩浩", "李四", "张三丰", "王五", "礼拜",
"杜荣", "六号", "馒头", "网易", "百度", "新浪", "腾讯", "样衣", "赵武", "孔明", "耶稣",
"小林", "小红", "小子", "牛逼", "牛皮", "牛犊子", "射雕", "无锡", "张无忌", "赵敏",
"周芷若", "张三丰小", "赵二娃", "桂花", "狗娃", "铁蛋", "扫风", "无名", "无缝", "小和",
"荷花", "雨花", "才华", "丁香花", "牡丹花", "太阳花", "茉莉花", "俊华", "赵志敬", "一直跑",
"尹志平", "白眉", "描线", "喵喵", "旺财", "旺旺", "狗剩", "小强 ", "小五", "选吗 ", "看看" };
private JTextArea jta;

public MutiCheckBoxFrm() {

this.setSize(800, 600);
this.setLocation(200, 100);
this.setLayout(new GridLayout(2, 1));
scrollPane = new JScrollPane();
centerPanel = new JPanel();
scrollPane.setViewportView(centerPanel);
jta = new JTextArea();
scrollPane1=new JScrollPane();
scrollPane1.setViewportView(jta);
// jta.setCaretPosition(jta.getText().length());
jta.setLineWrap(true);
scrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jta.setEditable(false);
jta.setFont(new Font("宋体", Font.PLAIN, 17));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
this.add(scrollPane);
this.add(scrollPane1);
this.setVisible(true);
}
private void init() {
centerPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
refreshPanel = new JPanel();
// refreshPanel.setSize(centerPanel.WIDTH, 200);
refreshPanel.setLayout(new GridLayout(0, 10));// new GridBagLayout()
Random r = new Random();
System.out.println(str.length);
int num = r.nextInt(str.length);
System.out.println("num==" + num);
for (int i = 0; i < num; i++) {
JCheckBox jcb = new JCheckBox(str[i]);
jcb.addActionListener(this);
jcb.addItemListener(this);
jcb.setSize(80, 25);
refreshPanel.add(jcb);
// addComponent(refreshPanel, jcb, i, j, 1, 1,
// GridBagConstraints.CENTER, GridBagConstraints.BOTH);
}
centerPanel.add(refreshPanel);

}

public static void addComponent(Container container, Component component,
int gridx, int gridy, int gridwidth, int gridheight, int anchor,
int fill) {
GridBagConstraints gbc = new GridBagConstraints(gridx, gridy,
gridwidth, gridheight, 1.0, 1.0, anchor, fill, insets1, 0, 0);// 建立网格包对象
container.add(component, gbc);// 添加到容器中
}

public static void main(String[] args) {
new MutiCheckBoxFrm();
}

@Override
public void actionPerformed(ActionEvent e) {

}

@Override
public void itemStateChanged(ItemEvent e) {
//swing中多个checkbox的选择,点击checkbox,
//就将他的文本存储到一个文本域中,如果取消他,就他的文本在文本域中消除,前提是checkbox的文本不能重复
JCheckBox jCheckBox;
jCheckBox = (JCheckBox) e.getSource();
String names = this.jta.getText();
String name = jCheckBox.getText();
if (jCheckBox.isSelected()) {
if (names == null || "".equals(names)) {
// List<String>
// names=Arrays.asList(this.jta.getText().split(","));
this.jta.setText(name);
} else {
// List<String>
// names=Arrays.asList(this.jta.getText().split(","));
if (!names.contains(name)) {
String value = this.jta.getText();
value = value + "," + name;
this.jta.setText(value);
}
}
// if(){}
// this.jta.setText(t);
} else {
if (names == null || "".equals(names)) {
this.jta.setText("");
} else {
if (names.contains(name)) {
String[] strArr = names.split(",");
int length = strArr.length;
System.out.println("length:" + length);
if(length==1){
System.out.println("只有一个");
if(strArr[0].equals(name)){
System.out.println("去掉了");
this.jta.setText("");
}
else{
this.jta.setText(strArr[0]);
}
}else{
String[] minStrs = new String[length - 1];
int mi = 0;
for (int i = 0; i < strArr.length; i++) {
if (!name.equals(strArr[i])) {
minStrs[mi] = strArr[i];
mi++;
}
}
String result = "";
for (int i = 0; i < minStrs.length; i++) {
if (i == minStrs.length - 1) {
result = result + minStrs[i];
} else {
result = result + minStrs[i] + ",";
}
}
this.jta.setText(result);
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: