Я пытаюсь закодировать очень простую программу Java - если форма заполняется и нажимается на определенную кнопку, то появляется всплывающее сообщение. С другой стороны, если заливка не выбрана, она отобразит разные сообщения.
fill.addItemListener(new ItemListener());
rect.addActionListener(new ButtonListener());
И событие действия, которое я написал:
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==fill) {
if(e.getSource()==rect) {
JOptionPane.showMessageDialog(null,"Shojibur");
}
else {
JOptionPane.showMessageDialog(null,"Checking");
}
}
}
}
В вашем случае вам не нужен ItemListener
для JRadioButton
. При нажатии кнопки вы можете проверить, выбран ли переключатель или нет
radioButton.isSelected()
а затем отобразить соответствующие сообщения.
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class RadioButtonTest extends JFrame implements ActionListener
{
private JRadioButton radio;
private JButton button;
public RadioButtonTest()
{
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
radio = new JRadioButton("Select Me!!");
button = new JButton("Click Me!!");
button.addActionListener(this);
add(radio, BorderLayout.CENTER);
add(button, BorderLayout.PAGE_END);
pack();
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new RadioButtonTest();
}
});
}
@Override
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == button)
{
if (radio.isSelected())
JOptionPane.showMessageDialog(this, "Selected.");
else
JOptionPane.showMessageDialog(this, "NOT selected!!");
}
}
}
if(e.getSource()==rect)
никогда не будет достигнута иtrue
одновременно. Проверьте свой блокif
. Кроме того, вы добавляете действие lsitener вrect
кнопку-переключатель, но неfill
переключатель. Следовательно,fill
не может быть источником события action → слушатель действия не показывает никакого сообщения.