Судно на воздушной подушке верно, но я просто хотел добавить, что вы, возможно, имели в виду это:
public void actionPerformed(ActionEvent e)
{
JTextField output = new JTextField("output box", 4);
this.getContentPane().add(output, BorderLayout.WEST);
output.setText("button was clicked");
}
Поскольку ваш класс "CountingNumbers" расширяет JFrame, он сам фактически является JFrame.Вот почему вы можете вызвать «this.getContentPane ()» вместо «frame.getContentPane ()».Но это только в том случае, если вы хотите, чтобы ваш объект «CountingNumbers» продолжал добавлять текстовые поля к себе.Если вы хотите добавить текстовые поля в другой фрейм, вам нужно будет сохранить этот фрейм как приватное поле CountingNumbers (которое можно инициализировать во время построения):
public class CountingNumbers extends JFrame implements ActionListener
{
private JFrame frameToAddTextFieldsTo;
public CountingNumbers(JFrame frameToAddTextFieldsTo){
this.frameToAddTextFieldsTo = frameToAddTextFiedsTo;
}
public void count()
{
JFrame frame = new JFrame("Counting Letters Application");
JTextField textEntry = new JTextField("enter your word/phrase here", 1);
JButton count = new JButton("Count Letters");
count.addActionListener(this);
frame.setPreferredSize(new Dimension(400, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Color teal = new Color(0, 128, 128);
frame.getContentPane().setBackground(teal);
frame.getContentPane().add(textEntry, BorderLayout.NORTH);
frame.getContentPane().add(count, BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JTextField output = new JTextField("output box", 4);
frameToAddTextFieldsTo.getContentPane().add(output, BorderLayout.WEST);
output.setText("button was clicked");
}
}
Поскольку «CountingNumbers» также реализует интерфейс ActionListenerэто также ActionListener, так что это означает, что он должен иметь те же методы, которые определены в интерфейсе ActionListener.(Как уже было сказано)