Stworzenie prostego edytora tekstu, jako programu obiektowego

0

Witam.
Mam napisać na projekt z programowania obiektowego prosty Edytor tekstu. Mam problem z przypisaniem akcji do przycisku. Po napisaniu(jak mi się wydawało poprawnego) kodu, program co prawda nie zwraca żadnego błędu, ale również nie reaguje na klikanie przycisków. Program na razie składa się z 4 klas. Layout to po prostu wygląd programu, Edit- metody np. pogrubienie, Actions czyli przypisanie metod do przycisków oraz Main czyli klasa główna. Nie wiedziałem czy mam to dodać do Newbie czy Java, jak to jest złe miejsce, proszę administratora o przeniesienie tematu ;)
Kody:
Main: http://pastebin.com/UajrKkVq
Layout: http://pastebin.com/4SGfkLLC
Edit: http://pastebin.com/v6xjZNx0
Actions: http://pastebin.com/zuLUsMuX

Z góry dziękuję za pomoc ;)

0

Musisz oprogramować klikanie w przyciski (pozycje w menu).

addActionListener(tuJakiśListener);

W metodzie actionPerformed listenera napisz kod, który ma być wykonany.
P.S. dział wybrałeś dobrze.

0

W klasie Actions tworzysz nowy obiekt Layout zamiast działać na referencji. Zmień kod klasy Actions

private Layout layout;
public Actions(Layout layout){
this.layout = layout;
}
//i potem działaj na tej referencji
0

l

	Layout.bold.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
                System.out.println("TEST");
                Edit.Bold();               
        }
        
}); 

To nie jest to? Przeprasza za moją głupotę...
EDIT
@garai
Teraz tak wygląda mój kod
l

package txteditor;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Actions{
	
	private Layout layout;
	public Actions(Layout layout){
	this.layout = layout;
	{

	layout.bold.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
                System.out.println("TEST");
                Edit.Bold();

               
        }
        
});	
	
	
}	
	

}}
 

Dalej nie działa

0

A gdzie tworzysz klasę Actions? Stwórz ją w klasie Layout po stworzeniu przycisku bold. Poprzedni mój post nieaktualny, ze względu na to że stworzyłeś przycisk jako pole statyczne o_O

0

@garai
Spróbowałem rozwiązać ten program, bez statycznych metod. Teraz mój kod programu wygląda tak
http://pastebin.com/b9EmnPV8
Layout:
http://pastebin.com/iw9SBumK
Edit:
http://pastebin.com/x0rh1yk1
Actions:
http://pastebin.com/AgxCY5ca

Tak na prawdę nie licząc pousuwanych static, zmienił się tylko kod Actions. Niestety dalej nie działa...

0

@garai napisał

A gdzie tworzysz klasę Actions?

Odpowiem za Ciebie, nigdzie nie tworzysz => z tej klasy nie korzystasz => nigdzie w programie nie ma metody actionPerforned => żaden przycisk nie ma prawa działać.
P.S. Napisałem Ci to już trzy dni temu.

0

@bogdans
Racja, to było idiotyczne z mojej strony. Teraz wygląda to tak:

 
		public void actionPerformed(ActionEvent e) {
        	Edit edit = new Edit();
        	Layout layout = new Layout();
        	
        	layout.bold.addActionListener(this);
        	
        	if (e.getSource() == layout.bold){
        		edit.Bold();
        		System.out.println("TEST");
        		
        	}

		} 

Teraz jedynie mam problem: Jak i gdzie powinienem dodać Action Listener.

0

Na końcu kostruktora w klasie Layout dodaj

Actions aa= new Actions(this);

Klasa Actions

public class Actions {

    private Layout layout;

    public Actions(Layout layout) {
        final Edit edit = new Edit(layout);
        this.layout = layout;
        layout.bold.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("TEST");
                edit.Bold();
            }
        }
        );
    }

}

Klasa Edit

Layout layout;

    public Edit(Layout layout) {
        this.layout = layout;
    }

    public void Bold() {
        layout.textbar.setFont(new Font("Tahoma", Font.BOLD, 12));
    }
0

Na prawdę dzięki wielkie!

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