Java 当radioButton.isSelected()时,setEnabled(true)
正如我在其他帖子中所说,我是Java新手,我遇到了一些愚蠢的问题,这里是交易: 我有一个radioButton(radioStock)和一个textField(stockField)。我希望stockField在默认情况下被设置为enabled(false),这没有问题,并且每当选中radioStock时,将stockfieldenabled设置为true。我写了这段代码,但不起作用Java 当radioButton.isSelected()时,setEnabled(true),java,swing,button,jradiobutton,Java,Swing,Button,Jradiobutton,正如我在其他帖子中所说,我是Java新手,我遇到了一些愚蠢的问题,这里是交易: 我有一个radioButton(radioStock)和一个textField(stockField)。我希望stockField在默认情况下被设置为enabled(false),这没有问题,并且每当选中radioStock时,将stockfieldenabled设置为true。我写了这段代码,但不起作用 if (radioStock.isSelected()) { stockField.setEnabled
if (radioStock.isSelected()) {
stockField.setEnabled(true);
}else{
stockField.setEnabled(false);
}
该代码需要位于附加到JRadioButton的侦听器中,例如ActionListener或ItemListener。您甚至不需要if块,因为您只需要侦听器中的一行代码:
radioStock.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent itemEvent) {
stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
}
});
有关使用JRadioButtons的更多信息,请查看教程:
编辑我的SSCCE
import java.awt.event.*;
import javax.swing.*;
public class ItemListenereg {
private static void createAndShowGui() {
final JRadioButton radioStock = new JRadioButton("Stock", true);
final JTextField stockField = new JTextField(10);
JPanel panel = new JPanel();
panel.add(radioStock);
panel.add(stockField);
radioStock.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent itemEvent) {
stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
}
});
JOptionPane.showMessageDialog(null, panel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
该代码需要位于附加到JRadioButton的侦听器中,例如ActionListener或ItemListener。您甚至不需要if块,因为您只需要侦听器中的一行代码:
radioStock.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent itemEvent) {
stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
}
});
有关使用JRadioButtons的更多信息,请查看教程:
编辑我的SSCCE
import java.awt.event.*;
import javax.swing.*;
public class ItemListenereg {
private static void createAndShowGui() {
final JRadioButton radioStock = new JRadioButton("Stock", true);
final JTextField stockField = new JTextField(10);
JPanel panel = new JPanel();
panel.add(radioStock);
panel.add(stockField);
radioStock.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent itemEvent) {
stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
}
});
JOptionPane.showMessageDialog(null, panel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
这应该行得通
radioStock.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if(radioStock == e.getSource())
{
stockField.setEnabled(radioStock.isSelected());
}
}
});
这应该行得通
radioStock.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if(radioStock == e.getSource())
{
stockField.setEnabled(radioStock.isSelected());
}
}
});
我贴了,但还是不起作用!我还需要改变什么吗?@Agustín:永远不要盲目地剪切和粘贴代码。使用其中包含的想法来扩充您自己的程序。阅读我为其提供链接的教程。思考,然后编码。然后,如果您仍然被卡住,创建并发布一个最小的程序,它只显示一个JRadioButton和一个JTextField,而不显示其他内容,并显示您的问题,一个。我将在上面发布一个sscce示例,向您展示我的意思。我粘贴了它,但仍然不起作用!我还需要改变什么吗?@Agustín:永远不要盲目地剪切和粘贴代码。使用其中包含的想法来扩充您自己的程序。阅读我为其提供链接的教程。思考,然后编码。然后,如果您仍然被卡住,创建并发布一个最小的程序,它只显示一个JRadioButton和一个JTextField,而不显示其他内容,并显示您的问题,一个。我将在上面发布一个sscce示例,向您展示我的意思(radioStock…如果这是一个匿名的内部类?源代码会是什么?为什么它会工作?OP应该注意什么原则?盲目地向OP扔代码是他们遇到问题的原因。有时我们需要教如何在强迫他们捕鱼的情况下捕鱼;)为什么
如果(radioStock…
如果这是一个匿名的内部类?源代码是什么?为什么它会工作?OP应该注意什么原则?盲目地向OP扔代码是他们遇到问题的原因。有时我们需要教他们如何捕鱼,只是强迫他们捕鱼;)