Droicyn utworzono 15 sierpnia 2009 utworzono 15 sierpnia 2009 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 17 sierpnia 2009 komentarz 17 sierpnia 2009 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 18 sierpnia 2009 Autor komentarz 18 sierpnia 2009 ale dalej nie wiem jak zamknąć to okno ;/
falcon1984 komentarz 18 sierpnia 2009 komentarz 18 sierpnia 2009 buttonclose.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent zdarzenieClose) { dispose(); } });
Droicyn komentarz 18 sierpnia 2009 Autor komentarz 18 sierpnia 2009 a ja wpisałe setVisible(false); czy może teżtak być?
falcon1984 komentarz 18 sierpnia 2009 komentarz 18 sierpnia 2009 Nie bardzo bo wtedy nie usuwasz okna z pamięci tylko go ukrywasz - robisz niewidocznym. Lepiej go zamknąć jak należy.
Droicyn komentarz 18 sierpnia 2009 Autor komentarz 18 sierpnia 2009 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.