Создать форму с несколькими кнопками так, чтобы надпись на первой кнопке при ее нажатии передавалась на следую - Java
Формулировка задачи:
Помогите доработать код
package zadacha;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Knopki extends JFrame implements ActionListener {
JLabel jlab;
Knopki() {
private String text="Click";
private int n=5;
// создать новый контейнер JFrame
JFrame jfrm = new JFrame("A Button Example");
// установить диспетчер компоновки FlowLayout
jfrm.setLayout(new FlowLayout());
// задать исходные размеры рамки окна <
jfrm.setSize(220, 90);
// завершить программу после закрытия окна
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Создание кнопок
JButton[]jb=new JButton[n];
jb[0]=new JButton(text);
// Добавление приемников событий от кнопки.
for(int i=0;i<n;i++){
jb[i].addActionListener(this);
}
// Добавление кнопок на панели содержимого.
for(int i=0;i<n;i++){
jfrm.add(jb[i]);
}
// создать метку
jlab = new JLabel("Press a button.");
// добавить метку в рамке окна
jfrm.add(jlab);
// отобразить рамку окна
jfrm.setVisible(true);
}
// Обработка событий от кнопки.
public void actionPerformed(ActionEvent ae) {
// Для определения нажатой кнопки используется команда действия.
for(int i=0;i<n;i++){
if(ae.getActionCommand().equals(text))
button[i+1].setText(text);
}
}
public static void main(String args[]) {
// создать рамку окна в потоке диспетчеризации событий
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Knopki();
}
}) ;
}
}Решение задачи: «Создать форму с несколькими кнопками так, чтобы надпись на первой кнопке при ее нажатии передавалась на следую»
textual
Листинг программы
package knopki;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
*
* @author Nicholas White
*/
public class Knopki implements ActionListener {
JLabel jlab;
private String text;
private int n;
JPanel panel;
JButton[]jb;
public Knopki() {
text="Click";
n=5;
JFrame jfrm = new JFrame("A Button Example");
panel = new JPanel(new FlowLayout());
jfrm.setContentPane(panel);
jfrm.setSize(220, 90);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb=new JButton[n];
jb[0]=new JButton(text);
panel.add(jb[0]);
for(int i=1;i<n;i++){
jb[i] = new JButton();
panel.add(jb[i]);
}
for(int i=0;i<n;i++){
jb[i].addActionListener(this);
}
jlab = new JLabel("Press a button.");
panel.add(jlab);
jfrm.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Knopki();
}
}) ;
}
@Override
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
for(int i = 0; i < n; i++){
if(b == jb[i]){
jb[i].setText("");
if(i == jb.length-1){
jb[0].setText(text);
continue;
}
jb[i+1].setText(text);
}
}
}
}