Как вы, наверное, уже знаете, метод 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.
Хорошо спасибо! – orly