首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Jcheckbox状态,java

关于Jcheckbox状态,java
EN

Stack Overflow用户
提问于 2014-04-25 01:44:54
回答 2查看 160关注 0票数 3

我正在尝试对被点击的按钮执行操作,但我需要检查是否选中了JCheckBox

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.*;

import javax.swing.*;

public class RandomPassword extends JFrame{
RandomPassword(String s){
    super(s);
    setSize(300,300);
    setVisible(true);
    addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent ev){
            System.exit(0);

        }
    });
    setLayout(null);
    setFont(new Font("Serif", Font.PLAIN, 20));
    Label l1 = new Label("Введите количество символов:");
    l1.setBounds(50, 100, 200, 30);
    add(l1);
    JTextField tf1 = new JTextField(1002);
    tf1.setBounds(50,130,200,30);
    add(tf1);
    JTextArea ta1 = new JTextArea();
    ta1.setPreferredSize(new Dimension(150,30));
    ta1.setBounds(50,210,230,30);
    add(ta1);
    JCheckBox ch1 = new JCheckBox("Использовать заглавные буквы");
    ch1.setBounds(50, 0, 200, 30);
    add(ch1);
    JCheckBox ch2 = new JCheckBox("Использовать цифры");
    ch2.setBounds(50, 30, 200, 30);
    add(ch2);
    JCheckBox ch3 = new JCheckBox("Использовать спецсимволы");
    ch3.setBounds(50, 60, 200, 30);
    add(ch3);
    JButton b1 = new JButton("Сгенерировать");
    b1.setBounds(75, 170, 150, 30);
    add(b1);
    b1.addActionListener(new Action());


}


public static void main(String[] args){
    new RandomPassword("Генератор случайных паролей");


}
static  class Action implements ActionListener{
        public void actionPerformed(ActionEvent e){



        }
}

}

我想在静态类操作中创建一个复选框,但他抛给我一个exception。我该怎么做?

试一下这个对我没什么帮助。

代码语言:javascript
复制
JButton b1 = new JButton(new AbstractAction("Сгенерировать") {

        public void actionPerformed(ActionEvent e) {
            ch1.isSelected();
        }
    }); 
EN

回答 2

Stack Overflow用户

发布于 2014-04-25 01:57:03

您可以通过以下方式访问裁剪后的JCheckBox:

代码语言:javascript
复制
((JCheckBox)e.getSource())
票数 0
EN

Stack Overflow用户

发布于 2014-04-25 01:57:28

按照程序的结构,复选框不在actionPerformed方法的作用域中。解决这个问题的一种方法是在构造器中直接使用匿名内部类。

代码语言:javascript
复制
final JCheckBox ch3 = new JCheckBox("Использовать спецсимволы");
...
b1.addActionListener(new  ActionListener(){
    public void actionPerformed(ActionEvent e){
        System.out.println(ch3.isSelected());
    }});

请注意,通过这种方式,您需要将复选框设为变量final,以便可以在内部类中访问它。然后,可以使用isSelected方法检查该复选框当前是否处于选中状态。

作为一个不相关的说明,最好将对setVisible(true)的调用放在构造函数的末尾,否则看起来有些图形用户界面元素不能正确绘制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23276148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档