2013-12-08 1 views
0

см. Мою проблему, начните с этой части кода. Я добавлю все addActionListener для кнопки , но когда она появится на кнопке Radio, она использует addItemListenet, но я реализую ActionListener только так, как я буду реализовывать ItemListener так, чтобы я могу установить закон, когда-либо пользователь Select SW образует переключатель и нажмите добавить запись ~ это добавит элемент в правом массив я сделал перед темкак выбрать JRadioButton в зависимости от кнопки

 exitButton.addActionListener(new ButtonWatcher()); 
    addButton.addActionListener(new ButtonWatcher()); 
    copyButton.addActionListener(new ButtonWatcher()); 
    showButton.addActionListener(new ButtonWatcher()); 
    rButton.addItemListenet(new ButtonWatcher()); 

    } 

    private class ButtonWatcher implements ActionListener{ 

     public void actionPerformed(ActionEvent a){ 
      Object buttonPressed=a.getSource(); 
      if(buttonPressed.equals(exitButton)) 
      { 
      System.exit(0); 
      } 

      if(buttonPressed.equals(addButton) && rButton1.isSelected()) 
      { 

       //do the action 
      } 

enter image description here

полного код

package item; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

/** 
* 
* @author isslam 
*/ 
public class MyFrameMain extends JFrame{ 
    Equipment newq = new Equipment(); 
    private final JLabel iLabel; 
    private final JLabel nLabel; 
    private final JTextField iJTextField; 
    private final JTextField nJTextField; 
    private final JTextField swTextField; 
    private final JTextField hwTextField; 
    private final JLabel jItemCounter; 
    private final JTextArea reSoulte; 
    private final JButton addButton; 
    private final JButton showButton; 
    private final JButton copyButton; 
    private final JButton exitButton; 

    public MyFrameMain(String title){ 
    setSize(500, 500); 
    setTitle(title); 
    setDefaultCloseOperation(MyFrameMain.EXIT_ON_CLOSE); 

    iJTextField = new JTextField(); 
    nJTextField = new JTextField(); 
    swTextField = new JTextField(); 
    hwTextField = new JTextField(); 
    nLabel = new JLabel("ID: "); 
    iLabel = new JLabel("Name: "); 
    jItemCounter = new JLabel("Number of current Item"); 

    reSoulte = new JTextArea(15,20); 
    reSoulte.setEditable(false); 
    reSoulte.setText("Array is empty"); 

    addButton = new JButton("Add an item into the Array"); 
    showButton = new JButton("Show all items in the Array"); 
    copyButton = new JButton("Copy Array into File"); 
    exitButton = new JButton("Exite"); 


    JRadioButton rButton1 = new JRadioButton("SW Version",false); 
    JRadioButton rButton2 = new JRadioButton("HW Type",false); 
    JRadioButton rButton3 = new JRadioButton("General",true);  

    ButtonGroup BGroup = new ButtonGroup(); 
    BGroup.add(rButton1); 
    BGroup.add(rButton2); 
    BGroup.add(rButton3); 

    JPanel rbPanel = new JPanel(new GridLayout(5,1)); 
    rbPanel.add(nLabel); 
    rbPanel.add(iLabel); 
    rbPanel.add(rButton1); 
    rbPanel.add(rButton2); 
    rbPanel.add(rButton3); 

    JPanel bpanel = new JPanel(new GridLayout(2,2)); 
    bpanel.add(addButton); 
    bpanel.add(showButton); 
    bpanel.add(copyButton); 
    bpanel.add(exitButton); 

    JPanel jtfPanel = new JPanel(new GridLayout(5,1)); 
     jtfPanel.add(iJTextField); 
     jtfPanel.add(nJTextField); 
     jtfPanel.add(swTextField); 
     jtfPanel.add(hwTextField); 
     jtfPanel.add(jItemCounter); 

    JPanel topPanel = new JPanel(new BorderLayout()); 
     topPanel.add(rbPanel, BorderLayout.WEST); 
     topPanel.add(jtfPanel, BorderLayout.CENTER); 

    JPanel mainPanel = new JPanel(new BorderLayout()); 
     mainPanel.add(bpanel, BorderLayout.SOUTH); 
     mainPanel.add(reSoulte, BorderLayout.CENTER); 
     mainPanel.add(topPanel, BorderLayout.NORTH); 


    Container pane = getContentPane(); 
    pane.add(mainPanel); 


    exitButton.addActionListener(new ButtonWatcher()); 
    addButton.addActionListener(new ButtonWatcher()); 
    copyButton.addActionListener(new ButtonWatcher()); 
    showButton.addActionListener(new ButtonWatcher()); 
    //rButton.addItemListenet(new ButtonWatcher()); 

    } 

    private class ButtonWatcher implements ActionListener{ 

     public void actionPerformed(ActionEvent a){ 
      Object buttonPressed=a.getSource(); 
      if(buttonPressed.equals(exitButton)) 
      { 
      System.exit(0); 
      } 

      if(buttonPressed.equals(addButton) && rButton1.isSelected()) 
      { 

       //do the action 
      } 

     } 
    }  
} 
+0

@peeskillet любая идея об этой ситуации –

+0

@camickr любой идеи –

+0

Ваш вопрос очень unlcear. Также опубликуйте свой код для класса equipent и какой метод вы говорите о –

ответ

0

Я не уверен, что массив вы хотите, чтобы заполнить, но получить текст с getText()

if(buttonPressed.equals(addButton) && rButton1.isSelected()) 
{ 
    String s1 = iJTextField.getText(); 
    String s2 = nJTextField.getText(); 
    String s3 = swTextField.getText(); 
    String s4 = hwTextField.getText(); 

    // something with these strings 
} 

Если какой-либо из входов числа, и вы хотите, чтобы числовое значение, необходимо разобрать.

Также они должны быть объявлены классами. Вы их объявили в конструкторе

JRadioButton rButton1 = new JRadioButton("SW Version",false); 
JRadioButton rButton2 = new JRadioButton("HW Type",false); 
JRadioButton rButton3 = new JRadioButton("General",true); 

Объявленном в конструкторе, они не находятся в области видимости класса слушателя

public class MyFrameMain extends JFrame{ 
    private final JLabel iLabel; 
    private final JLabel nLabel; 
    private final JTextField iJTextField; 
    private final JTextField nJTextField; 
    private final JTextField swTextField; 
    private final JTextField hwTextField; 
    private final JLabel jItemCounter; 
    private final JTextArea reSoulte; 
    private final JButton addButton; 
    private final JButton showButton; 
    private final JButton copyButton; 
    private final JButton exitButton; 
    JRadioButton rButton1 = new JRadioButton("SW Version",false); 
    JRadioButton rButton2 = new JRadioButton("HW Type",false); 
    JRadioButton rButton3 = new JRadioButton("General",true); 

    public MyFrameMain(String title){ 

Кроме того, на самом деле не выглядеть, как вам нужен слушатель для радио, поскольку событие не требуется. JButton прослушивает событие, а в actionPerformed проверяет, выбран ли переключатель. Поэтому не нужно, чтобы радиокнопка слушала какое-либо событие, JButton делает это.

+0

см. Это утверждение, если (buttonPressed.equals (addButton) && rButton1.isSelected()) не работают, потому что я не знаю, как реализовать ItemListener с помощью actionListener для использования кнопок и кнопок –

+0

Вам не нужно реализовывать слушатель для радиообмена. Вам нужно исправить свои области. Класс вашего слушателя не может найти радиообъект. Мой ответ объясняет это –

+0

@isslamakkilah, я думаю, вы должны переосмыслить дизайн. Фактически использование 'BUttonGroup' с' JRadioButton' и добавление 'actionListener' inline, как было предложено в моем ответе, значительно упростит вашу работу – Sage

0

Попробуйте ввести код. Я ahve добавил List item и добавление значения от swTextField TextFiled пункта, когда пользователь выбирает rButton1 и нажмите на кнопку addButton

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.ArrayList; 

/** 
* 
* @author isslam 
*/ 
public class Test extends JFrame { 

    private final JLabel iLabel; 
    private final JLabel nLabel; 
    private final JTextField iJTextField; 
    private final JTextField nJTextField; 
    private final JTextField swTextField; 
    private final JTextField hwTextField; 
    private final JLabel jItemCounter; 
    private final JTextArea reSoulte; 
    private final JButton addButton; 
    private final JButton showButton; 
    private final JButton copyButton; 
    private final JButton exitButton; 
    JRadioButton rButton1; 
    java.util.List<String> item = new ArrayList<String>(); 

    public Test(String title) { 
     setSize(500, 500); 
     setTitle(title); 
     setDefaultCloseOperation(Test.EXIT_ON_CLOSE); 

     iJTextField = new JTextField(); 
     nJTextField = new JTextField(); 
     swTextField = new JTextField(); 
     hwTextField = new JTextField(); 
     nLabel = new JLabel("ID: "); 
     iLabel = new JLabel("Name: "); 
     jItemCounter = new JLabel("Number of current Item"); 

     reSoulte = new JTextArea(15, 20); 
     reSoulte.setEditable(false); 
     reSoulte.setText("Array is empty"); 

     addButton = new JButton("Add an item into the Array"); 
     showButton = new JButton("Show all items in the Array"); 
     copyButton = new JButton("Copy Array into File"); 
     exitButton = new JButton("Exite"); 


     rButton1 = new JRadioButton("SW Version", false); 
     JRadioButton rButton2 = new JRadioButton("HW Type", false); 
     JRadioButton rButton3 = new JRadioButton("General", true); 

     ButtonGroup BGroup = new ButtonGroup(); 
     BGroup.add(rButton1); 
     BGroup.add(rButton2); 
     BGroup.add(rButton3); 

     JPanel rbPanel = new JPanel(new GridLayout(5, 1)); 
     rbPanel.add(nLabel); 
     rbPanel.add(iLabel); 
     rbPanel.add(rButton1); 
     rbPanel.add(rButton2); 
     rbPanel.add(rButton3); 

     JPanel bpanel = new JPanel(new GridLayout(2, 2)); 
     bpanel.add(addButton); 
     bpanel.add(showButton); 
     bpanel.add(copyButton); 
     bpanel.add(exitButton); 

     JPanel jtfPanel = new JPanel(new GridLayout(5, 1)); 
     jtfPanel.add(iJTextField); 
     jtfPanel.add(nJTextField); 
     jtfPanel.add(swTextField); 
     jtfPanel.add(hwTextField); 
     jtfPanel.add(jItemCounter); 

     JPanel topPanel = new JPanel(new BorderLayout()); 
     topPanel.add(rbPanel, BorderLayout.WEST); 
     topPanel.add(jtfPanel, BorderLayout.CENTER); 

     JPanel mainPanel = new JPanel(new BorderLayout()); 
     mainPanel.add(bpanel, BorderLayout.SOUTH); 
     mainPanel.add(reSoulte, BorderLayout.CENTER); 
     mainPanel.add(topPanel, BorderLayout.NORTH); 


     Container pane = getContentPane(); 
     pane.add(mainPanel); 


     exitButton.addActionListener(new ButtonWatcher()); 
     addButton.addActionListener(new ButtonWatcher()); 
     copyButton.addActionListener(new ButtonWatcher()); 
     showButton.addActionListener(new ButtonWatcher()); 
     //rButton.addItemListenet(new ButtonWatcher()); 

    } 

    private class ButtonWatcher implements ActionListener { 

     public void actionPerformed(ActionEvent a) { 
      Object buttonPressed = a.getSource(); 
      if (buttonPressed.equals(exitButton)) { 
       System.exit(0); 
      } 

      if (buttonPressed.equals(addButton) && rButton1.isSelected()) { 

       item.add(swTextField.getText()); 
       System.out.println(item); 

      } 

     } 
    } 

    public static void main(String args[]) { 
     Test t = new Test("Test"); 
     t.setVisible(true); 
    } 
} 
+0

, это должен быть мой следующий шаг, потому что if (buttonPressed.equals (addButton) && rButton1.isSelected()) не работают –

+0

Мой код работает, попробуйте это, я сделал каналы для этого кода для работы – Shamse

0
  • Использование ButtonGroup с JRadioButton вашего контекста.
  • Используйте jRadioButton.setActionCommand(String), чтобы установить соответствующее им название действия: для вашего контекста "SW Version" и все такое.
  • Используйте ArrayList, чтобы добавить элемент вашего контекста. Попробуйте сопоставить каждый такой список массивов, используя HashMap<Key, Val> i.e., HashMap<String, ArrayList<Equipment>>, где "SW Version" или что-нибудь такое имя будет ключом
  • Попробуйте добавить слушателей к каждой кнопке действия в строке с помощью анонимного класса.

Так образец кодирования для добавления действия стал бы изображая использование (полезности) из ButtonGroup:

addButton.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       String actionCommand = buttonGroup1.getSelection() 
                 .getActionCommand(); 

        // actionCommand = "SW Version" 
       map.get(actionCmmand).add(equipment);  
       } 
     }); 

учебника и справочник:

  1. How to use Radio Button, проверьте демо для ButtonGroup
  2. ButtonGroup class
  3. HashMap