x-kom hosting

[JAVA] Okno dialogowe

Droicyn
utworzono
utworzono

Witam mam dwie sprawy:

1)Jest to okno dialogowe mam na nim przycisk zamknij i wiem jak zrobić, żeby przycisk zamknął cały program ale nie mam zielonego pojęcia jak zrobić, żeby zamknąć tylko to okno?

2)Druga sprawa. Chodzi o rozmiar przyciski i list kombinowanych one zajmują całą szerokość okna jak zmniejszyć ich wys. i szer.?

package salon;import javax.swing.*;import java.awt.Event.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;class OknoZadKG extends JDialog{    public OknoZadKG(JFrame wlasciciel)    {            //określam wlasciwosci okna dialogowego            super(wlasciciel, "Zadatek Gotówka", true);            final JDialog ZadKGPanel = new JDialog();            Container powZawartosci = ZadKGPanel.getContentPane();            ZadKGPanel.setDefaultCloseOperation(DISPOSE_ON_CLOSE);            ZadKGPanel.setResizable(false);            ZadKGPanel.setModal(true);            //tworze panel sprzedazy            JPanel ZadKGpanel = new JPanel();            ZadKGpanel.setLayout(new GridLayout(6, 2));            ZadKGpanel.add(new JLabel("Kwota:"));            lista = new JComboBox();            lista.setEditable(true);            lista.addItem("Damian Szepietowski");            lista.addItem("Sebastian Połowianiuk");            lista.addItem("Piotr Budrowski");            lista.addItem("Maciej Rzeńca");            ZadKGpanel.add(lista);            buttonclose = new JButton("Zamknij");            buttonclose.addActionListener(new ActionListener()            {            @Override                public void actionPerformed(ActionEvent zdarzenieClose)                {                }            });            ZadKGpanel.add(buttonclose);            add(ZadKGpanel, BorderLayout.CENTER);            //rozmiar okna i polozenie okna            setSize(300,350);            setLocation(490,255);    }private JComboBox lista;private JButton buttonclose;}

Poprawiłem i wygląda to tak:

package salon;import javax.swing.*;import java.awt.Event.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;class OknoZadKG extends JDialog{    public OknoZadKG(JFrame wlasciciel)    {            //określam wlasciwosci okna dialogowego            super(wlasciciel, "Zadatek Gotówka", true);            final JDialog ZadKGPanel = new JDialog();            Container powZawartosci = ZadKGPanel.getContentPane();            ZadKGPanel.setDefaultCloseOperation(DISPOSE_ON_CLOSE);            ZadKGPanel.setResizable(false);            ZadKGPanel.setModal(true);            //tworze panel na wisanie danych            JPanel ZadKGpanel = new JPanel();            ZadKGpanel.add(new JLabel("Gotówka:"));            ZadKGpanel.add(poleKwota = new JTextField("0",5));            ZadKGpanel.add(new JLabel("zł."));            add(ZadKGpanel, BorderLayout.NORTH);            //panel na liste kombinowana            JPanel listPanel = new JPanel();            Container zd1 = getContentPane();            listPanel.add(new JLabel("Towar:"));            listPanel.add(poleTowar = new JTextField(" ",15));            listPanel.add(new JLabel("Sprzedawca:"));            lista = new JComboBox();            lista.setEditable(true);            lista.addItem("Damian Szepietowski");            lista.addItem("Sebastian Połowianiuk");            lista.addItem("Piotr Budrowski");            lista.addItem("Maciej Rzeńca");            listPanel.add(lista);            add(listPanel, BorderLayout.CENTER);            //panel na przyciski            JPanel buttonPanel = new JPanel();            Container zd2 = getContentPane();            buttonPrint = new JButton("Drukuj");            buttonPrint.addActionListener(new ActionListener()            {            @Override                public void actionPerformed(ActionEvent zdarzeniePrint)                {                }            });            buttonPanel.add(buttonPrint);            buttonclose = new JButton("Zamknij");            buttonclose.addActionListener(new ActionListener()            {            @Override                public void actionPerformed(ActionEvent zdarzenieClose)                {                }            });            buttonPanel.add(buttonclose);            add(buttonPanel, BorderLayout.SOUTH);            //rozmiar okna i polozenie okna            setSize(300,250);            setLocation(490,255);    }private JComboBox lista;private JButton buttonPrint;private JButton buttonclose;private JTextField poleKwota;private JTextField poleTowar;}

ale czy da się to jakoś ładniej i sensowniej poukładać?

benkowik
komentarz
komentarz

Możesz zrobić tak jak ja kiedyś robiłem czyli:

1. Tworzysz obiekt panelu:

MojPanel styl = new MojPanel();

2. Robisz klasę tego panelu:

class MojPanel extends JPanel {    public MojPanel() {

3. Tutaj dajesz kody do buttonów i innych, np:

JButton butt = new JButton("Zamknij");        butt.setLayout(new GridLayout());        butt.setBounds(30, 40, 100, 25);        butt.setBackground(new java.awt.Color (211,211,211));        add(butt);

4. Dajesz zdarzenia do przycisku:

ActionListener zdarzenie = new zamykanie();        butt.addActionListener(zdarzenie);

5. Klasy ze zdarzeniami:

class zamykanie implements ActionListener {        public void actionPerformed(ActionEvent zdarzenie) {        }   }

Możesz też tutaj zobaczyć:

http://4programmers.net/Java/GridLayout

Przykładowa forma:

public class Forma{        public static void main(String args[])            {            Okno okno=new Okno();             okno.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);             okno.setVisible(true);            okno.setResizable(false);            okno.setSize(300, 250);            }}class Okno extends JFrame {    public Okno() {        MojPanel styl = new MojPanel();        styl.setLayout(null);        styl.setBackground(new java.awt.Color (205, 205, 205));        Container wyglad = getContentPane();        wyglad.add(styl);    }}class MojPanel extends JPanel {    public MojPanel() {        JButton b = new JButton("Backspace");        b.setLayout(new GridLayout());        b.setBounds(30, 40, 100, 25);        b.setBackground(new java.awt.Color (211,211,211));        add(b);        ActionListener cs = new kasowanie();        b.addActionListener(cs);         };        class kasowanie implements ActionListener {          public void actionPerformed(ActionEvent zdarzenie) { }        }    }
Droicyn
komentarz
komentarz

ale dalej nie wiem jak zamknąć to okno ;/

falcon1984
komentarz
komentarz

Wołasz dispose() w klasie okna :)

Droicyn
komentarz
komentarz

czyli jak ?

falcon1984
komentarz
komentarz
            buttonclose.addActionListener(new ActionListener()            {            @Override                public void actionPerformed(ActionEvent zdarzenieClose)                {                    dispose();                }            });
Droicyn
komentarz
komentarz

a ja wpisałe setVisible(false); czy może teżtak być?

falcon1984
komentarz
komentarz

Nie bardzo bo wtedy nie usuwasz okna z pamięci tylko go ukrywasz - robisz niewidocznym. Lepiej go zamknąć jak należy.

Droicyn
komentarz
komentarz

AHA no to już zmieniam. Dzięki za info.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.