gpt4 book ai didi

java - 如何使用 JCheckBox 启用/禁用 JTextField?或者我的代码有什么问题?

转载 作者:行者123 更新时间:2023-11-30 01:56:49 26 4
gpt4 key购买 nike

我是java编程新手,我在JTextfield数组旁边有一个JCheckBox数组。

我需要使一个复选框在选中时停用 JTextField,但我没有成功

如何让它与 Action 监听器一起工作?

这是我的代码:

public class Checklist_Complete extends JFrame {

private JLabel description;
private JButton send;
private JTextField text[]=new JTextField[10];
private JCheckBox cb[]=new JCheckBox[10];

public Checklist_Complete() {

setTitle("Activities");
setSize(500,300);
setupWidgets();
setVisible(true);
}

private void setupWidgets() {
JPanel pn_center = new JPanel(new GridLayout(10,1));
JPanel pn_west = new JPanel(new GridLayout(10,1));

description = new JLabel("List your activities and uncheck the irrelevant ones");
send = new JButton("Send Checklist");

for (int i=0; i<10; i++) {
text[i] = new JTextField();
cb[i] = new JCheckBox("", true);
}

add(description, BorderLayout.NORTH);
add(pn_center, BorderLayout.CENTER);
add(pn_west, BorderLayout.WEST);
add(send, BorderLayout.SOUTH);

for (int i=0; i<10; i++){

pn_center.add(text[i]);
pn_west.add(cb[i]);
}
}

private void setupEvents() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

for (int i=0; i<10; i++) {

cb[i].addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent event) {
if(cb[i].isSelected()){
text[i].setEnabled(false);
} else{
text[i].setEnabled(true);
}
}
});
}
}

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

最佳答案

这是一个使用 ItemListener 的快速解决方案。

 private void setupEvents() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
for (int i=0; i<10; i++) {
final int finalI = i;
cb[i].addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
text[finalI].setEnabled(e.getStateChange() == ItemEvent.SELECTED);
}
});
}
}

您也可以使用 ActionListener 来完成此操作,但解决方案有点麻烦,而且不太优雅。我发布此内容是因为您也可以这样解决您的问题:

 private void setupEvents() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
for (int i=0; i<10; i++) {
final int finalI = i;
cb[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text[finalI].setEnabled(!text[finalI].isEnabled() && e.getID() == ActionEvent.ACTION_PERFORMED);
}
});
}
}

关于java - 如何使用 JCheckBox 启用/禁用 JTextField?或者我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54163264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com