Передача текста JTextArea в Listener и JScrollPane в нулевом расположении - Java

Узнай цену своей работы

Формулировка задачи:

В приложении 3 класса 1: FormStart (основной)
package TestForm;
 
import javax.swing.JFrame;
 
public class FormStart {
    public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true); //  устанавливае стандартный внешний вид
        JFrame frame = new JFrame("Заголовок окна"); // желаемый заголовок
 
        //Далее создаём поверхность (панель) для размещения компонентов
        MainFormAppearance demo = new MainFormAppearance(); // внешность формы
        frame.setContentPane(demo.createContentPane()); // передаем как параметр в коструктор
 
        // задаём операцию, которая выполниться при закрытии
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300); // задаём размер окна
        frame.setVisible(true); //  форма будет видимой
    }
}
2:MainFormAppearance (внешний вид)
package TestForm;
 
import TestActions.*;
 
import javax.swing.*; // импортируем SWING
import java.awt.*; // импортируем все подпакеты AWT
 
import java.awt.event.ActionListener;
 
public class MainFormAppearance {
    public JPanel createContentPane (){
 
        // We create a bottom JPanel to place everything on.
        // сначала создаётся "панель", на которой и размещаюся
        // остальные компоненты
        JPanel totalGUI = new JPanel(); // создаём "поверхность"
        totalGUI.setLayout(new FlowLayout());
 
        JTextArea newText = new JTextArea(5,10);
        //newText.setLocation(10,10);
        //newText.setSize(100,200);
        newText.setWrapStyleWord(true);
        newText.setLineWrap(true);
        totalGUI.add(new JScrollPane(newText));

        // Создаём кнопку---------------
        JButton redButton = new JButton("Кнопка 1");
        //redButton.setLocation(120, 200); // расположение кнопки
        //redButton.setSize(200,50 ); // размер кнопки
        // создаём объект-обработчик события
        ActionListener actionListener = new TestActionListener(); // создаём создаём действие
        // назначаем этот обработчик кнопке
        redButton.addActionListener(actionListener);// прикрепляем действие к кнопке (срабоет по нажатии на неё)
        totalGUI.add(redButton); // добавляем кнопку на поверхность
 
        totalGUI.setOpaque(true);
        return totalGUI; // возвращаем внешний вид
    }
}
3: TestActionListener (сам слушатель)
package TestActions;
 
import TestForm.MainFormAppearance;
 
import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class TestActionListener implements ActionListener { // наследуемся от стандартного класса  ActionListener
    public void actionPerformed(ActionEvent e) {
        // выведем сообщение из нескольких строк
        // одну из них в кавычках
 
        String message = "Кнопка нажата";
        JOptionPane.showMessageDialog(new JFrame(), message, "Внимание",
                JOptionPane.ERROR_MESSAGE);
    }
}
Как передать в TestActionListener текст из JTextArea на данный момент? или вернее будет задать вопрос: как в слушателе работать с данными на панели, ведь в дальнейшем придется работать не только с кнопками и текстареями? И почему-то при написании класса MainFormAppearance с setLayout(null):
package TestForm;
 
import TestActions.*;
 
import javax.swing.*; // импортируем SWING
import java.awt.*; // импортируем все подпакеты AWT
 
import java.awt.event.ActionListener;
 
public class MainFormAppearance {
    public JPanel createContentPane (){
 
        // We create a bottom JPanel to place everything on.
        // сначала создаётся "панель", на которой и размещаюся
        // остальные компоненты
        JPanel totalGUI = new JPanel(); // создаём "поверхность"
        totalGUI.setLayout(new FlowLayout());
 
        JTextArea newText = new JTextArea(5,10);
        newText.setLocation(10,10);
        newText.setSize(100,200);
        newText.setWrapStyleWord(true);
        newText.setLineWrap(true);
        totalGUI.add(new JScrollPane(newText));

        // Создаём кнопку---------------
        JButton redButton = new JButton("Кнопка 1");
        redButton.setLocation(120, 200); // расположение кнопки
        redButton.setSize(200,50 ); // размер кнопки
        // создаём объект-обработчик события
        ActionListener actionListener = new TestActionListener(); // создаём создаём действие
        // назначаем этот обработчик кнопке
        redButton.addActionListener(actionListener);// прикрепляем действие к кнопке (срабоет по нажатии на неё)
        totalGUI.add(redButton); // добавляем кнопку на поверхность
 
        totalGUI.setOpaque(true);
        return totalGUI; // возвращаем внешний вид
    }
}
То TextArea не появляется, если же не прикреплять JScrollPane то все прекрасно работает

Решение задачи: «Передача текста JTextArea в Listener и JScrollPane в нулевом расположении»

textual
Листинг программы
JScrollPane scrollPane = new JScrollPane(newText);
        totalGUI.add(scrollPane);
        scrollPane.setBounds(150, 100, 50, 50);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5