У меня есть программа со свинг-интерфейсом для заказа определенных товаров.
класс, который обрабатывает заказы, имеет JFrame
, который имеет JPanel
, который имеет JButton
. Когда эта кнопка нажата, мне нужен ввод в классе, который обрабатывает ордера. Но не могу понять, как получить этот вход полностью.
панель с кнопкой:
public class PayPanel extends JPanel {
private double paidAmount;
private JButton payButton;
public PayPanel() {
setBorder(BorderFactory.createTitledBorder("Make Payment"));
JLabel payLabel = new JLabel("Pay with: ");
JTextField payField = new JTextField(12);
this.payButton = new JButton("Pay");
this.payButton.setPreferredSize(new Dimension(100, 20));
this.payButton.addActionListener(new ActionListener() {
public double paidAmount;
public void actionPerformed(ActionEvent e) {
this.paidAmount = Double.parseDouble(payField.getText());
}
public double getPaidAmount() {
return this.paidAmount;
}
});
setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
add(payLabel, gridBagConstraints);
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
add(payField, gridBagConstraints);
gridBagConstraints.weighty = 10;
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
add(payButton, gridBagConstraints);
}
public double getPaidAmount() {
ActionListener[] payButtonListeners = this.payButton.getActionListeners();
ActionListener payButtonActionListener = payButtonListeners[0];
return payButtonActionListener.getPaidAmount(); // this function is not recognized even though i defined it in the action listener like shown above in the contructor.
}
я добавил переменную paidAmount
в объявлении ActionListener
, чтобы я мог получить ActionListener
из кнопки оплаты и затем вызвать функцию getPaidAmount()
. Но когда я получаю ActionListener
из payButton.getActionListeners()
и затем вызываю объявленную мной функцию, java не распознает функцию getPaidAmount()
.
Мой вопрос: как мне получить это paidAmount
и перенести его с кнопки на панель, а затем с панели на рамку и с рамки на класс, которому принадлежит рамка?