Stworzenie prostego edytora tekstu, jako programu obiektowego

2015-01-14 17:18
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 ;)

Tytuł wątku powinien w sposób sensowny i w miarę wyczerpujący opisywać Twój problem; Pamiętaj, że wątki z nic nie mówiącymi tytułami z reguły lądują w koszu; - furious programming 2015-01-14 17:37

Pozostało 580 znaków

2015-01-14 17:25
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-01-14 17:29
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

Pozostało 580 znaków

2015-01-14 17:31
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

edytowany 2x, ostatnio: speedy1194, 2015-01-14 17:45

Pozostało 580 znaków

2015-01-14 18:02
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

edytowany 1x, ostatnio: garai, 2015-01-14 18:03

Pozostało 580 znaków

2015-01-17 17:15
Spee
0

@garai
Spróbowałem rozwiązać ten program, bez statycznych metod. Teraz mój kod programu wygląda tak:Main:
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...

Pozostało 580 znaków

2015-01-17 17:39
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2015-01-17 18:02

Pozostało 580 znaków

2015-01-17 18:05
speedy11941
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.

Pozostało 580 znaków

2015-01-17 19:13
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));
    }
edytowany 1x, ostatnio: garai, 2015-01-17 19:13

Pozostało 580 znaków

2015-01-17 19:33
speedy11941
0

Na prawdę dzięki wielkie!

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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