Nie wyświetla ramki

0

Ćwiczę ActionListenera i napisałam prosty programik. Po uruchomieniu Eclipse nie pokazuje mi błędów, ale ramki nie widać. Dlaczego?
I drugie pytanie: jeśli chciałabym utworzyć przycisk "guzik" poza konstruktorem, w metodzie np. utworzPrzycisk(), to jak miałabym ją wywołać, skoro w main nie mogę zrobić okno.utworzPrzycisk()?
To mój kod:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SpringLayout;

public class Proba extends JFrame implements ActionListener
{
JFrame ramka;
JPanel panel1;
JButton guzik;

public static void main(String[] args) throws Exception {
Proba okno = new Proba();

}
public void Proba(){
ramka = new JFrame("okienko");
ramka.setLayout(new SpringLayout());
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setBackground(Color.cyan);
panel1 = new JPanel();
ramka.add(panel1);
ramka.setVisible(true);
guzik = new JButton("naciśnij");
ramka.add(guzik);
ramka.setSize(100, 100);
guzik.addActionListener(this);

}

 public void actionPerformed (ActionEvent e)

{
System.out.print("wciśnięto button");

};

}

Proszę o pomoc.

0
  1. Zasada jednej odpowiedzialności -> robimy DWIE klasy, jedna jest okienkiem, druga jest action listenerem!
  2. Po co dziedziczysz z JFrame skoro potem i tak tworzysz drugiego?
  3. Nie umiesz nawet napisać konstruktora (to dlatego ci to nie działało, ale ty chyba piszesz to za pomocą lodówki bo Eclipse od razu podpowiedział mi że jest tam metoda która miała być konstruktorem...)
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Proba {
    private final JFrame ramka = new JFrame("okienko");
    private final JPanel panel = new JPanel();
    private final JLabel napis = new JLabel("pusty");
    private final JButton guzik = new JButton("nacisnij");

    public Proba() {
        ramka.setLayout(new FlowLayout());
        ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ramka.setBackground(Color.cyan);
        panel.add(napis);
        ramka.add(panel);
        ramka.add(guzik);
        ramka.setPreferredSize(new Dimension(300, 100));
        guzik.addActionListener(new AkcjaGuzika(napis));
        ramka.pack();
        ramka.setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        Proba program = new Proba();
    }
}

class AkcjaGuzika implements ActionListener {
    private final JLabel napis;
    private int wcisnieto = 0;

    public AkcjaGuzika(JLabel n) {
        napis = n;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        wcisnieto++;
        napis.setText("Wcisnieto " + wcisnieto + " razy");
    };
}

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