- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为一个简单的 Applet 运行以下代码,但在调用 ItemListener 时不断收到错误。任何人都知道我该如何解决这个问题。当我检查任何复选框“线程“AWT-EventQueue-1”java.lang.NullPointerException 中的异常”时,我尝试显示的消息不会显示。这些按钮工作正常。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Hotel extends JApplet implements ActionListener{
JCheckBox cb1, cb2;
JButton b1, b2;
JLabel lb;
JTextField jt;
double tot,num;
public void init(){
Container cp=getContentPane();
cp.setLayout(null);
cb1=new JCheckBox("Single");
cb2=new JCheckBox ("Double");
b1=new JButton ("Amount");
b2= new JButton("Exit");
lb= new JLabel("");
jt=new JTextField();
jt.setBounds (100,100,70,20);
cb1.setBounds(100, 50,70,20);
cb2.setBounds(100,200,70,20);
b1.setBounds(100,250,100,20);
b2.setBounds(100,300,70,20);
lb.setBounds(100,400,200,20);
cp.add(lb);
cp.add(cb1);
cp.add(cb2);
cp.add(b1);
cp.add(b2);
cp.add(jt);
b1.addActionListener(this);
b2.addActionListener(new BtnExit());
cb1.addItemListener(new CBox());
cb2.addItemListener(new CBox2());
}
@Override
public void actionPerformed(ActionEvent ae) {
//this one works fine
num=Double.parseDouble(jt.getText());
if (cb1.isSelected()){
tot=10000*num;
}
if (cb2.isSelected()){
tot=15000*num;
lb.setText("15 000/room");
}
lb.setText(String.valueOf(tot));
}
}
class CBox implements ItemListener {
@Override
public void itemStateChanged(ItemEvent ie) {
//to display the price per room once the user ticks on "Single"
Hotel h=new Hotel();
h.lb.setVisible(true);
h.lb.setText("You will pay 10000/room");
}
}
class CBox2 implements ItemListener{
@Override
public void itemStateChanged(ItemEvent ie) {
//to display the price per room once the user ticks on the "Double" checkbox
Hotel h=new Hotel();
h.lb.setVisible(true);
h.lb.setText("You will pay 15 000/room");
}
}
最佳答案
您正在监听器中创建新的 Hotel
实例,而不是修改旧的实例。您应该将现有实例传递给监听器:
class CBox implements ItemListener {
final Hotel hotel;
CBox(Hotel h) {
this.hotel = h;
}
@Override
public void itemStateChanged(ItemEvent ie) {
hotel.lb.setVisible(ie.getStateChange() == ItemEvent.SELECTED);
hotel.lb.setText("You will pay 10000/room");
}
}
使用方式如下:
cb1.addItemListener(new CBox(this));
此外,您可能应该检查新的复选框状态,而不是将标签设置为无条件可见。正如对预期功能的观察(在上面的代码中实现)。
对于其他项目监听器也是如此。
或者,您可以使用匿名类:
cb1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent ie) {
lb.setText("You will pay 10000/room");
lb.setVisible(ie.getStateChange() == ItemEvent.SELECTED);
}
});
此外,您确实应该使用布局管理器。 Swing 就是为处理这些问题而设计的。 null
布局是一场即将发生的灾难。
关于java - 关于 JApplet ItemListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293027/
我正在从 Dive Log 教程中学习 java swing。对象已声明如下: ItemListener handler = new CheckBoxHandler(); 上面的代码会产生一个编译错误
我一直在 itemStateChanged 部分遇到问题。当我编译程序时出现“无法找到变量”错误,而且我似乎无法找出我哪里做错了。任何帮助深表感谢。谢谢。 import javax.swing.*;
所以如果我有一个组合框“box”,并且它被设置为具有值“hello”和“world”的数组,我如何检测选择了哪一个? 最佳答案 box.getSelectedItem(); 这将返回一个被选中的对象。
基本上这个简单程序的作用是 单击按钮时显示摘要, 比萨大小有三个单选按钮,浇头有三个复选框。 我遇到的问题是,当用户第一次单击浇头,然后单击按钮并在 MessageDialog 中显示适当的摘要后,当
我正在尝试在 JCheckBox 中实现 ItemListener。以下代码有效: public class Test { public static void main(String[] a
我正在尝试为一个简单的 Applet 运行以下代码,但在调用 ItemListener 时不断收到错误。任何人都知道我该如何解决这个问题。当我检查任何复选框“线程“AWT-EventQueue-1”j
我有一个 JComboBox 和一个 ItemListener,可以检测项目状态何时发生变化。我希望它监听是否选择了列表中的第一个项目。 它是一个用户名列表,默认情况下始终使用第一项。但是我需要知道用
我正在为我的单选按钮使用 ItemListener。我看到了很多 ItemListener 函数,但我的似乎工作方式不同。 ... jUserButton2.addItemListene
我编写了这段代码,它应该在从组合框中选择一个项目后更改 JLabel 中的值。当我运行应用程序时,JLabel 中会显示该值,但是当我在组合框中选择其他值时,JLabel 中的值不会更改。有谁知道问题
当我使用 ItemListener 监听组合框时,我如何知道在 ItemEvent.DESELECTED 被触发时取消选择了哪个项目? 最佳答案 使用ItemEvent.getItem() 关于jav
jbox.addItemListener(new ItemListener() { @Override public void itemStateChanged(Ite
考虑向 JComboBox 添加事件监听器。我已经完成了通常的窗口等。创建了一个新的 JComboBox,然后将 .addItem() 岛放入其中。然后我尝试在新创建的组合框中使用 .addItemL
我正在将 ItemListener 添加到组合框,并且我想知道事件 ItemEvent.DESELECTED 是否始终在事件 ItemEvent.SELECTED 之前触发,或者顺序是否未指定。 在一
我注意到,在选择复选框时在 ItemListener 中使用消息框时,它将阻止该复选框被选中。这是演示该问题的完整示例: import javax.swing.*; import static jav
我正在尝试制作一个可以启用或禁用另一个按钮的按钮。我不确定为什么它没有进入 ItemListener 或者 ItemListener 只用于切换事件?这是我的代码。 这是在主要方法中:
我最小化了我的程序以仅包含问题,并且我尝试完全按照我从许多示例中理解的方式进行编码。当我使用 ActionListener 时,我解决了问题。但我想知道为什么使用 ItemListener 时,复选框
我是 Java Swing 新手。请帮助我如何实现以下要求。 单击按钮后,我必须打开一个对话框。我的对话框有 2 个 JComboBox。我在 JComboBox1 上编写了一个 ItemListne
我为 ListView 创建了一个 onTouchListener,用于检查该列表中的哪个项目(在我的例子中为字符串)被单击及其位置。我想取出列表中的该字符串,因此我创建了一个方法来获取数组适配器的字
这个API有什么用? 几个月前我采用了它,当时我想我可以用它来捕获 ComboBox 中的键盘和鼠标操作,以便在用户做出选择后调用业务逻辑。作为一名开发人员,我只使用鼠标,幸福地无知,认为我的解决方案
我正在尝试从我的一个 JComboBoxes 中删除项目监听器。下面是代码。 clientNameCombo.removeItemListener(clientNameCombo.getItemLis
我是一名优秀的程序员,十分优秀!