Dopisać wprowadzony w polu edycyjnym tekst w kolejnym wierszu okna

0

Po naciśnięciu przycisku Dodaj program powinien dopisać wprowadzony w polu edycyjnym tekst w kolejnym wierszu okna. Dla obsługi tego przycisku utwórz kolejną klasę do obsługi zdarzenia i umieść ją wewnątrz klasy definiującej okno programu. Do tej pory skleiłem taki oto kod, ale nie potrafię sobie do końca poradzić z tym poleceniem. Przesyłam, screen okna i kod.

takim tam

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

public class InnerGUI extends JFrame {

	private class Handler implements ActionListener {
		public void actionPerformed(ActionEvent e) {

			JOptionPane.showMessageDialog(null, t.getText());
		}
	}

	JTextArea a = new JTextArea("Dodaj");
	JTextArea t = new JTextArea("Wprowadz tekst...");
	JButton b = new JButton("Wyswietl tekst na konsoli");


	public InnerGUI() {
		Handler h = new Handler();

		b.addActionListener(h);

		JPanel kontener = new JPanel();
		kontener.add(new JTextField(20));
		kontener.add(new JButton("Dodaj"));

		add(kontener, BorderLayout.PAGE_START);
		add(t, BorderLayout.CENTER);
		add(b, BorderLayout.PAGE_END);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(400, 300);

		setVisible(true);

	}

	public static void main(String[] args) {
		new InnerGUI();
	}
}
0

Tworzysz np. klasę prywatną implementującą ActionListener i w zdarzeniu klawisza dodaj tworzysz jej obiekt a następnie poprzez append dodajesz nowe wiersze w JTextArea

np.

 JTextArea a = new JTextArea();
JButton b = new JButton("aa");
b.addActionListener(new Zdarzenie());


...
 private class Zdarzenie implements ActionListener {


        @Override
        public void actionPerformed(ActionEvent e) {
                     
            a.append("" + "\n");
        }
    }
0

coś takiego próbowałem, bo w sumie jest logiczne, do 'a' - dodaj jest skierowany append do "t.append("" + "\n");"
ale nadal mi nie chodzi, błąd własnie w tej linii

a.addActionListener(w);
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class InnerGUI extends JFrame {

	private class Handler implements ActionListener {
		public void actionPerformed(ActionEvent e) {

			JOptionPane.showMessageDialog(null, t.getText());
		}
	}
	
	private class Writing implements ActionListener {
		 
       
        public void actionPerformed(ActionEvent e) {
 
            t.append("" + "\n");
        }
    }

	JTextArea a = new JTextArea("Dodaj");
	JTextArea t = new JTextArea("Wprowadz tekst...");
	JButton b = new JButton("Wyswietl tekst na konsoli");


	public InnerGUI() {
		Handler h = new Handler();
		Writing w = new Writing();
		
		a.addActionListener(w);

		b.addActionListener(h);

		JPanel kontener = new JPanel();
		kontener.add(new JTextField(20));
		kontener.add(new JButton("Dodaj"));

		add(kontener, BorderLayout.PAGE_START);
		add(t, BorderLayout.CENTER);
		add(b, BorderLayout.PAGE_END);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(400, 300);

		setVisible(true);

	}

	public static void main(String[] args) {
		new InnerGUI();
	}
}

0

bo dodajesz ActioListener to JTextArea a nie do JButton

w ogóle dlaczego do JButton dodajesz wyświetlanie komunikatu a kiedy ma być dodany tekst? jeżeli w tym samym momencie to zmodyfikuj kod w klasie Handler

0

może jestem zbyt tępy, ale nadal tego nie rozumiem, ale spoko, zapytałem się już gościa i mi wytłumaczył w 4 zdaniach

0

zacznijmy od sprecyzowania kiedy ma zostać dodany tekst?

0

Po wciśnięciu przycisku 'Dodaj' tekst z tej górnej ramki małej, ma się dodać do pola 'center' w ktorym jest "wprowadz tekst"

1
  1. Powinieneś skorzystać z metody JOptionPane.showInputDialog, wtedy użytkownik może wprowadzić nowy tekst.
  2. Powinieneś sprawdzać jak użytkownik zamknął okno dialogowe - wspomniana metoda może zwrócić null.
  3. Akcja winna wyglądać tak:
 center.append("\n" + ...);
0
dilax napisał(a):

Po wciśnięciu przycisku 'Dodaj' tekst z tej górnej ramki małej, ma się dodać do pola 'center' w ktorym jest "wprowadz tekst"

czyli co Twoim zdaniem powinna robić klasa Handler ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1