2015-11-15 8 views
0

В настоящее время я пытаюсь изучить новые вещи на Java и решил запустить графический интерфейс. Я создал графический интерфейс с ActionListener и с помощью метода «actionPerformed».ActionListener (actionPerformed) возвращает что-то?

Вопрос в том, могу ли я вернуть что-либо из этого метода (actionPerformed) и где он приземлится? Потому что метод вызывается, когда я делаю что-то конкретное в этом графическом интерфейсе.

Или как я могу дать этому этому действиюПереформированный метод - другой параметр?

Заранее спасибо;)

ответ

3

Как вы, наверное, уже знаете, метод actionPerformed объявлен как не возвращение void или ничего и так нет, вы ничего не можете вернуться из него, но вы можете изменить состояние любое изменяемое поле в рамках этого метода, например текст, отображаемый в JLabel.

Например:

import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class ActionListenerTest extends JPanel { 
    private static final String[] DAYS = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; 
    private int dayIndex = 0; 
    private JLabel label = new JLabel("", SwingConstants.CENTER); 
    private JButton button = new JButton("Press Me Please!"); 

    public ActionListenerTest() { 
     label.setText(DAYS[dayIndex]); 
     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       dayIndex++; // advance the index 
       dayIndex %= DAYS.length; // if index >= the length of the array, make it 0 
       label.setText(DAYS[dayIndex]); 
      } 
     }); 

     setLayout(new GridLayout(2, 1)); 
     add(label); 
     add(button); 
    } 

    private static void createAndShowGui() { 
     ActionListenerTest mainPanel = new ActionListenerTest(); 

     JFrame frame = new JFrame("ActionListenerTest"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGui(); 
      } 
     }); 
    } 
} 

Пока actionPerformed ничего не возвращает, он продвигает dayIndex 1, или устанавливает его в 0, если индекс совпадает с длиной массива String. Затем метод устанавливает текст JLabel с использованием данных массива String.

+0

Хорошо спасибо! – orly

2

No actionPerformed - это обратный вызов, поэтому вы можете обрабатывать событие действия, реализуя метод actionPerformed. Здесь вы можете: 1) обновить некоторые элементы GUI в вашем приложении 2) сохранить данные результатов в закрытом поле класса View для его обработки в будущем.

Например:

private Map<String,Object> data = ...; 

public void showElements(){ 
    ... 
    button1.addActionListener (new ActionListener() 
    { 
      public void actionPerformed (ActionEvent e){ 
       Object info = "Somebody clicked on my button!"//or you can use ActionEvent to extract mode information 
       data.put("button1",info) 
      } 
    }) 
} 
Смежные вопросы