Swing - wyświetlenie tekstu po naciśnięciu przycisku

0

Najpierw chciałbym was zapytać, gdzie najlepiej szukać i przeglądać kod źródłowy javy. Bo chciałbym sobie zobaczyć aplikacje robione w Swing innych ludzi.

A więc tak, chciałbym zrobić takie coś, że po kliknięciu myszką na przycisk"Malaria" wyświetli się tekst na TextArea. Nie wiem co ma być wtym Mouse event, bo takiego przykładu w książce nie ma

package com.java21days;

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

public class Patogen extends JFrame implements MouseListener {
    private Object informacja;
    public Patogen() {
        super("Patogeny");
        setSize(300, 220);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea informacja = new JTextArea(5, 7);
        JButton malariaButton = new JButton("Malaria");
        malariaButton.addMouseListener(this);
        JPanel pane = new JPanel();
        JLabel commentsLabel = new JLabel("Informacje o malarii: ");
        informacja.setLineWrap(true);
        informacja.setWrapStyleWord(true);
        pane.add(commentsLabel);
        pane.add(malariaButton);
        pane.add(informacja);
        add(pane);
        setVisible(true);
    }

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel(
                "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
            );
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }
    }

    public static void main(String[] arguments) {
        Patogen.setLookAndFeel();
        Patogen auth = new Patogen();
    }

    @Override
    public void mousePressed(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void mouseExited(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.

    }
    
    public void mouseClicked(MouseEvent event) {
        informacja.setText("Malaria to choroba tropikalna, która wywoływana jest obecnością pasożyta (tzw. zarodźca) w komórkach wątroby, szpiku kostnego, śledziony, węzłów chłonnych oraz w czerwonych krwinkach u człowieka. Objawami choroby mogą być dreszcze, wysoka temperatura i przyspieszone bicie serca. Zwalczaniem malarii w skali światowej zajmuje się Światowa Organizacja Zdrowia.");        
    }
}


1

Czemu mouseEvent zamiast ActionPerformed?

W każdym razie, musisz wywołać metodę na rzecz obiektu, bo to że ona sobie istnieje to jeszcze nic nie daje. Zakładam, że skoro jesteś na etapie programów okienkowych, to wiesz o co z tym chodzi, bo to że jest to obsługa zdarzeń - to nic nie znaczy. Schemat działania jest taki sam jak w przypadku każdej inne[niestatycznej] metody.

1

Wiem, że dawanie gotowców to zło i raczej tak nie powinno się robić, ale - Twój kod po małej poprawce:

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

public class Patogen extends JFrame {

    public Patogen() {
        super("Patogeny");
        setSize(300, 220);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea informacja = new JTextArea(5, 7);
        JButton malariaButton = new JButton("Malaria");
        malariaButton.addMouseListener(new MouseAdapter() {
                                           @Override
                                           public void mouseClicked(MouseEvent mouseEvent) {
                                              informacja.setText("Malaria to choroba tropikalna, która wywoływana jest obecnością pasożyta (tzw. zarodźca) w komórkach wątroby, szpiku kostnego, śledziony, węzłów chłonnych oraz w czerwonych krwinkach u człowieka. Objawami choroby mogą być dreszcze, wysoka temperatura i przyspieszone bicie serca. Zwalczaniem malarii w skali światowej zajmuje się Światowa Organizacja Zdrowia.");

                                           }
                                       }
        );
        JPanel pane = new JPanel();
        JLabel commentsLabel = new JLabel("Informacje o malarii: ");
        informacja.setLineWrap(true);
        informacja.setWrapStyleWord(true);
        pane.add(commentsLabel);
        pane.add(malariaButton);
        pane.add(informacja);
        add(pane);
        setVisible(true);
    }

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel(
                    "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
            );
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }
    }

    public static void main(String[] arguments) {
        Patogen.setLookAndFeel();
        Patogen auth = new Patogen();
    }

}

Dobrze kombinowałeś, ino w nie tym miejscu.

0

Super wielkie dzięki Serechiel. Moja prosta aplikacja wygląda coraz lepiej, to na razie początki, ale może coś z tego będzie.

street.jpg

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