2013-10-01 2 views
0

У меня есть класс, который использует Japplet. Форма имеет 2 поля ввода и кнопку. Он также имеет TextPanel для отображения информации, введенной пользователем. Проблема, с которой я сталкиваюсь, отображает эту информацию, введенную в текстовую область, с помощью прослушивателя действий. Я не знаю, чего не хватает.Action Listeners в Java

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.awt.event.ActionListener; 
import java.util.*; 

public class CreatePanel extends JPanel 
{ 
private Vector accountList; 
private JButton button1; 
private TransferPanel transferPanel; 
final int FIELD_WIDTH = 10; 
    final int ROWS = 50; 
final int COLUMNS = 50; 



public CreatePanel(Vector accountList, TransferPanel tPanel) 
{ 
this.accountList = accountList; 
this.transferPanel = tPanel; 


JLabel label1 =new JLabel("Account ID: "); 
JLabel label2 = new JLabel("Amount: "); 
JTextField accountID = new JTextField(); 
JTextField amount = new JTextField(); 


button1 = new JButton("Create an Account"); 



JTextArea textArea = new JTextArea(ROWS, COLUMNS); 
textArea.append("No account"); 
textArea.setEditable(true); 

JPanel infoPanel = new JPanel(); 
infoPanel.setLayout(new GridLayout(3,2)); 
infoPanel.add(label1); 
infoPanel.add(accountID); 
infoPanel.add(label2); 
infoPanel.add(amount); 
infoPanel.add(button1); 

add(infoPanel); 

ActionListener listener = new ButtonListener(); 
button1.addActionListener(listener); 

JPanel textPanel = new JPanel(); 
textPanel.add(textArea); 

    add(textPanel); 




    } 



    private class ButtonListener implements ActionListener 
    { 


public void actionPerformed(ActionEvent event) 
    { 



    } //end of actionPerformed method 
} //end of ButtonListener class 

} //end of CreatePanel class 
+0

Вы удалили весь свой уместный код, сделав свой вопрос неопровержимым - почему? Я вернул его в прежнее состояние, так что это имеет смысл для нас. –

ответ

0

Я не знаю, если я неправильно понял ваш вопрос, но какой-то образом в методе actionPerformed вашего класса ButtonListener - вы должны реагировать на ActionEvents, которые передаются в

2

Предложений:

  • . Прежде всего, пожалуйста, приложите усилия для хорошего форматирования кода. Если он не хорошо отформатирован (например, случайные дикие отступы, которые вы сейчас показываете), мы не сможем хорошо понять ваш код, и вы часто будете делать ошибки. Каждый блок кода должен иметь отступы одинаковой суммы, я обычно использую 2-3 пробела (один или другой и сохраняю их согласованными). Кроме того, достаточно одной строки пустого пробела.
  • Что касается вашей проблемы, ваши поля не должны быть локальными для конструктора, но должны быть полями классов, чтобы методы класса могли обращаться к ним. В частности, ваш JTextArea. В противном случае ваш ButtonListener не сможет распознать переменную JTextArea, так как область видимости переменной будет ограничена блоком, в котором он был объявлен, - вот ваш конструктор.

Так это изменить:

public class CreatePanel extends JPanel 
{ 
private Vector accountList; 
private JButton button1; 
private TransferPanel transferPanel; 
final int FIELD_WIDTH = 10; 
    final int ROWS = 50; 
final int COLUMNS = 50; 



public CreatePanel(Vector accountList, TransferPanel tPanel) 
{ 
this.accountList = accountList; 
this.transferPanel = tPanel; 


JLabel label1 =new JLabel("Account ID: "); 
JLabel label2 = new JLabel("Amount: "); 
JTextField accountID = new JTextField(); 
JTextField amount = new JTextField(); 


button1 = new JButton("Create an Account"); 



JTextArea textArea = new JTextArea(ROWS, COLUMNS); 
textArea.append("No account"); 
textArea.setEditable(true); 

// .... etc 

к этому (обратите внимание на изменения форматирования, а):

public class CreatePanel extends JPanel { 
    public static final int FIELD_WIDTH = 10; 
    public static final int ROWS = 50; 
    public static final int COLUMNS = 50; 

    private Vector accountList; 
    private JButton button1; 
    private TransferPanel transferPanel; 
    private JTextField accountID = new JTextField(); 
    private JTextField amount = new JTextField(); 
    private JTextArea textArea = new JTextArea(ROWS, COLUMNS); 

    public CreatePanel(Vector accountList, TransferPanel tPanel) { 
    accountList = accountList; 
    transferPanel = tPanel; 

    JLabel label1 =new JLabel("Account ID: "); 
    JLabel label2 = new JLabel("Amount: "); 

    button1 = new JButton("Create an Account"); 

    textArea.append("No account"); 
    textArea.setEditable(true); 

    // .... etc 

и теперь ButtonListener доступ поле TEXTAREA.

Смежные вопросы