Слушатель и JLabel - Java
Формулировка задачи:
Почему не работает обработчик событий на кнопке - не видит объект write. и как выводит ответ на JLabel ?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class GeometryFrame extends JFrame {
GeometryFrame() {
int w=500, h=400;
setTitle("Геометрия");
setBounds(400,200,w,h);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CPanel panel = new CPanel(w,h);
add(panel);
}
}
class CPanel extends JPanel {
public CPanel(int W, int H) {
setLayout(null);
setBounds(0,0,W,H);
JTextField TF = new JTextField();
TF.setHorizontalAlignment(JTextField.LEFT);
TF.setBounds(10,20,100,25);
JTextField TF1 = new JTextField();
TF1.setHorizontalAlignment(JTextField.LEFT);
TF1.setBounds(10,60,100,25);
JLabel answer = new JLabel("",1);
add(TF); add(TF1); add(answer);
// ActionListener actionListener = new TestActionListener();
JButton btn = new JButton("Сложить");
btn.setBounds(10,100,100,25);
btn.addActionListener(TestActionListener);
add(btn);
}
}
public class TestActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
int t, t1, result;
t = Integer.parseInt(TF.getText());
t1 = Integer.parseInt(TF1.getText());
result = t + t1;
write.setText("Ответ:" + result);
}
}
class Geometry{
public static void main(String[] args) {
new GeometryFrame();
}
}Решение задачи: «Слушатель и JLabel»
textual
Листинг программы
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
public class GeometryRevoked extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
public static void main(String[] args){
new GeometryRevoked();
}
private JTextField t1, t2;
private JLabel result;
private JButton button;
GeometryRevoked(){
initFrame();
initComponents();
setVisible(true);
}
private void initComponents(){
SpringLayout layout = new SpringLayout();
JPanel panel = new JPanel(layout);
t1 = new JTextField(20);
t2 = new JTextField(20);
button = new JButton("Button");
result = new JLabel("");
layout.putConstraint(SpringLayout.WEST, t1, 5, SpringLayout.WEST, this);
layout.putConstraint(SpringLayout.WEST, t2, 5, SpringLayout.WEST, this);
layout.putConstraint(SpringLayout.NORTH, t2, 25, SpringLayout.NORTH, this);
layout.putConstraint(SpringLayout.WEST, result, 5, SpringLayout.WEST, this);
layout.putConstraint(SpringLayout.NORTH, result, 50, SpringLayout.NORTH, this);
layout.putConstraint(SpringLayout.WEST, button, 5, SpringLayout.WEST, this);
layout.putConstraint(SpringLayout.NORTH, button, 75, SpringLayout.NORTH, this);
panel.add(t1);
panel.add(t2);
panel.add(result);
panel.add(button);
button.addActionListener(this);
add(panel);
}
private void initFrame(){
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
}
@Override
public void actionPerformed(ActionEvent e){
int value = Integer.parseInt(t1.getText()) + Integer.parseInt(t2.getText());
result.setText(String.valueOf(value));
}
}