关于Jcheckbox状态,java
我正在尝试对被单击的按钮执行操作,但我需要检查是否选中了关于Jcheckbox状态,java,java,checkbox,jcheckbox,Java,Checkbox,Jcheckbox,我正在尝试对被单击的按钮执行操作,但我需要检查是否选中了JCheckBox 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.aw
JCheckBox
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){
}
}
}
我想在静态集体行动中设置一个复选框,但他向我抛出了一个异常
。我该怎么办?试试这个对我没有帮助
JButton b1 = new JButton(new AbstractAction("Сгенерировать") {
public void actionPerformed(ActionEvent e) {
ch1.isSelected();
}
});
您可以通过以下方式访问剪辑的JCheckBox:
((JCheckBox)e.getSource())
程序的结构方式复选框不在
actionPerformed
方法的范围内。解决这个问题的一种方法是直接在构造函数中使用匿名内部类
final JCheckBox ch3 = new JCheckBox("Использовать спецсимволы");
...
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(ch3.isSelected());
}});
注意,这种方式需要使复选框变量为final
,以便可以在内部类中访问它。然后,您可以使用isSelected
方法检查复选框当前是否已选中
作为一个不相关的注意事项,最好将对
setVisible(true)
的调用放在构造函数的末尾,否则一些GUI元素似乎绘制不正确。您能更具体一点吗?你会得到什么样的例外?问题似乎是您创建的那些复选框不在操作侦听器的scopre中。尝试使用构造函数的内部类。是的,我想这是操作侦听器的范围问题,你能帮我写一个innter类吗?最后我得到了它,必须使用final和ch1、ch2和ch3。Ty有关内部分类的帮助如果这对您有所帮助,请随时接受答案,将此问题标记为已解决。这样,操作侦听器需要附加到复选框,而不是按钮。