gpt4 book ai didi

Java JCheckBox ItemListener 使程序无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:35 25 4
gpt4 key购买 nike

我最小化了我的程序以仅包含问题,并且我尝试完全按照我从许多示例中理解的方式进行编码。当我使用 ActionListener 时,我解决了问题。但我想知道为什么使用 ItemListener 时,复选框无法正确操作。如果我在没有 ItemListener 的情况下运行我的程序,它会正常工作。使用此 ItemListener,复选框不会更改状态。

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class omaJFrame extends JFrame{
private JCheckBox checkBox1;

public omaJFrame() {
super("Window Title");

TheHandler handler = new TheHandler();
setLayout(new FlowLayout());

checkBox1 = new JCheckBox("Checkbox 1");
add(checkBox1);
checkBox1.addItemListener(handler);
}

private class TheHandler implements ItemListener {
String output = "";

public void itemStateChanged(ItemEvent event) {
if (event.getItem()==checkBox1)
output = String.format("%s", checkBox1.isSelected());
JOptionPane.showMessageDialog(null, output);
}
}
}

import javax.swing.JFrame;
public class EventHandlerMain {
public static void main(String[] args) {
omaJFrame window = new omaJFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(350,200);
window.setVisible(true);
}
}

最佳答案

对我有用。另请注意,Swing GUI 对象应该event dispatch thread 上构建和操作。 .

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class OmaJFrame extends JFrame {

private JCheckBox checkBox1;

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
OmaJFrame f = new OmaJFrame();
}
});
}

public OmaJFrame() {
super("Window Title");
setDefaultCloseOperation(EXIT_ON_CLOSE);
TheHandler handler = new TheHandler();
setLayout(new FlowLayout());
checkBox1 = new JCheckBox("Checkbox 1");
add(checkBox1);
checkBox1.addItemListener(handler);
pack();
setLocationByPlatform(true);
setVisible(true);
}

private class TheHandler implements ItemListener {

String output = "";

@Override
public void itemStateChanged(ItemEvent event) {
if (event.getItem() == checkBox1) {
output = String.format("%s", checkBox1.isSelected());
}
JOptionPane.showMessageDialog(null, output);
}
}
}

关于Java JCheckBox ItemListener 使程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751258/

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