Blad - poczatkujacy
kakiet - 03-04-2006 00:08
Blad - poczatkujacy
Witam wszystkich:)
Chcialbym xzaznaczyc na wstepnie ze jestem poczatkujacy i moje pytania czesto, gesto beda dla wiekszosci banalne. Ale jak to mowia kto pyta ten nie bladzi:) Wiec pytanie 1: - Czy istaieje jaks grupa dyskusyjna dla tak zwanych newbie? Pytanie 2: - Jest pogrami ktory to ma wyswietlac Ramke z trzema przyciskami, ktore to maja za zadanie zmiecniac kolor tla ramki, nestety tego nie robia - a dlaczego?
Oto kod programu:
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class TestPrzyciskow { public static void main(String[] args) { RamkaPrzyciskow ramka = new RamkaPrzyciskow(); ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); ramka.show(); } }
/** Ramka, zawierajca panel przycisk? */ class RamkaPrzyciskow extends JFrame { public RamkaPrzyciskow() { setTitle("TestPrzyciskow"); setSize(SZEROKOSC, WYSOKOSC);
// docz panel do ramki
PanelPrzyciskow panel = new PanelPrzyciskow(); Container powZawartosci = getContentPane(); powZawartosci.add(panel); }
public static final int SZEROKOSC = 300; public static final int WYSOKOSC = 200; }
/** Panel, zawierajcy trzy przyciski */ class PanelPrzyciskow extends JPanel { public PanelPrzyciskow() { // skonstruuj przyciski
JButton przyciskZolty = new JButton("Zoltyy"); JButton przyciskNiebieski = new JButton("Niebieski"); JButton przyciskCzerwony = new JButton("Czerwony");
// docz przyciski do panelu
add(przyciskZolty); add(przyciskNiebieski); add(przyciskCzerwony);
// skonstruuj dziaania przycisk?
DzialanieKoloru dzialanieZoltego = new DzialanieKoloru(Color.yellow); DzialanieKoloru dzialanieNiebieskiego = new DzialanieKoloru(Color.blue); DzialanieKoloru dzialanieCzerwonego = new DzialanieKoloru(Color.red);
// przyporzdkuj dziaania do przycisk?
przyciskZolty.addActionListener(dzialanieZoltego); przyciskNiebieski.addActionListener(dzialanieNiebi eskiego); przyciskCzerwony.addActionListener(dzialanieCzerwo nego); } } /** Suchacz, zmieniajcy kolor ta panelu */ class DzialanieKoloru extends JPanel implements ActionListener { public DzialanieKoloru(Color k) { kolorTla = k; }
public void actionPerformed(ActionEvent zdarzenie) { setBackground(kolorTla); repaint(); }
private Color kolorTla; }
kukems - 03-04-2006 00:08
kakiet wrote:
> Pytanie 2: > - Jest pogrami ktory to ma wyswietlac Ramke z trzema przyciskami, ktore > to maja za zadanie zmiecniac kolor tla ramki, nestety tego nie robia - > a dlaczego? > > Oto kod programu:
> /** > Suchacz, zmieniajcy kolor ta panelu > */ > class DzialanieKoloru extends JPanel implements ActionListener > { > public DzialanieKoloru(Color k) > { > kolorTla = k; > } > > public void actionPerformed(ActionEvent zdarzenie) > { > setBackground(kolorTla); > repaint(); > } > > private Color kolorTla; > }
Metoda repaint() jakos magicznie nie chce dobrze dzialac w swingu wiec tutaj prawdopodobnie lezy problem. Pozatym niepotrzebnie Dzialanie kolory dziedziczy po JPanel i implementuje ActionListener moglbys przeniesc ta czesc kodu od razu do Panelu bo w ten sposob DzialanieKoloru dziedziczy kilkadziesiat metod tylko poto zeby uzyc dwoch.
-- Pozdrawiam kukems
G. - 04-04-2006 00:09
Czego kolor ma się zmieniać? Bo tu tworzysz 3 panele którym zmieniasz kolory przyciskami, ale tych paneli nigdzie nie dodałeś (rejestracja jako listenery nie ma wpływu) więc się nigdzie nie wyświetlają.
kakiet: > DzialanieKoloru dzialanieZoltego = new > DzialanieKoloru(Color.yellow); > DzialanieKoloru dzialanieNiebieskiego = new > DzialanieKoloru(Color.blue); > DzialanieKoloru dzialanieCzerwonego = new > DzialanieKoloru(Color.red); > > // przyporzdkuj dziaania do przycisk? > > przyciskZolty.addActionListener(dzialanieZoltego); > przyciskNiebieski.addActionListener(dzialanieNiebi eskiego); > przyciskCzerwony.addActionListener(dzialanieCzerwo nego); > } > } > /** > Suchacz, zmieniajcy kolor ta panelu > */ > class DzialanieKoloru extends JPanel implements ActionListener > { > public DzialanieKoloru(Color k) > { > kolorTla = k; > } > > public void actionPerformed(ActionEvent zdarzenie) > { > setBackground(kolorTla); > repaint();
Powyżej zmieniasz kolor tła panelu który nigdzie nie jest dodany (jako panel) wiec jest niewidoczny. Może lepiej podać w konstruktorze panel któremu zmieniasz kolor a tu nie dziedziczyc z panela i ograniczyć sie do listenera.
> } > > private Color kolorTla; > } >
Pozdrawiam G.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
kakiet - 04-04-2006 00:09
Dzeki za pomoc:) Gdy klase DzialanieKoloru zrobilem kalsa wewnetrzna PanelPrzyciskow, wszystko chodzi bez zarzutow:)
Podaje jeszcze kod: import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Grafika2 { public static void main(String[] args) { RamkaPrzyciskow ramka = new RamkaPrzyciskow(); ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); ramka.show(); } }
/** Ramka, zawierajca panel przycisk? */ class RamkaPrzyciskow extends JFrame { public RamkaPrzyciskow() { setTitle("TestPrzyciskow"); setSize(SZEROKOSC, WYSOKOSC);
// docz panel do ramki
PanelPrzyciskow panel = new PanelPrzyciskow(); Container powZawartosci = getContentPane(); powZawartosci.add(panel); }
public static final int SZEROKOSC = 300; public static final int WYSOKOSC = 200; }
/** Panel, zawierajcy trzy przyciski */ class PanelPrzyciskow extends JPanel { public PanelPrzyciskow() { // skonstruuj przyciski
JButton przyciskZolty = new JButton("Zoltyy"); JButton przyciskNiebieski = new JButton("Niebieski"); JButton przyciskCzerwony = new JButton("Czerwony");
// docz przyciski do panelu
add(przyciskZolty); add(przyciskNiebieski); add(przyciskCzerwony);
// skonstruuj dziaania przycisk?
DzialanieKoloru dzialanieZoltego = new DzialanieKoloru(Color.yellow); DzialanieKoloru dzialanieNiebieskiego = new DzialanieKoloru(Color.blue); DzialanieKoloru dzialanieCzerwonego = new DzialanieKoloru(Color.red);
// przyporzdkuj dziaania do przycisk?
przyciskZolty.addActionListener(dzialanieZoltego); przyciskNiebieski.addActionListener(dzialanieNiebi eskiego); przyciskCzerwony.addActionListener(dzialanieCzerwo nego); }
/** Suchacz, zmieniajcy kolor ta panelu */ class DzialanieKoloru implements ActionListener { public DzialanieKoloru(Color k) { kolorTla = k; }
public void actionPerformed(ActionEvent zdarzenie) { setBackground(kolorTla); repaint(); }
private Color kolorTla; }
}
kakiet - 04-04-2006 00:09
Dzieki za odpowiedzc ale czy mogbys mi wystukac przykladowy kod, ktory reazlizuje Twoj pomysl. Dopiero sie ucze i sam do koncza wszystkiego nie rozumiem . . . :)
G. - 04-04-2006 00:09
kakiet: > Dzieki za odpowiedzc ale czy mogbys mi wystukac przykladowy kod, ktory > reazlizuje Twoj pomysl. Dopiero sie ucze i sam do koncza wszystkiego > nie rozumiem . . . :)
Twój poprawiony kod jest OK. Zauważ że metoda setBackground(kolorTla) wywoływana w actionPerformed(...) ustawia teraz kolor tła obiektowi "panel" klasy PanelPrzycisków. I działa. Poprzednio ta metoda ustawiała kolor tła trzem obiektom klasy Działanie koloru - i było to podwójnie błędne. Po pierwsze te panele były nigdzie nie dodane a więc niewidoczne, a po drugie ich kolor zmieniał się tylko raz - za pierwszym razem - z domyślnego na podany w konstruktorze. Więc nawet gdyby były dodane, kolor zmienił by się za pierwszym kliknięciem, a kolejne kliknięcia w ten sam przycisk pozostały by bez widocznego efektu.
Oczywiście wszystko zależy od tego "co autor miał na myśli" ;-)
Pozdrawiam G.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
kakiet - 05-04-2006 00:04
Dzieki za pomoc:)
dziadek - 05-04-2006 00:04
kakiet wrote: > Witam wszystkich:) > > Chcialbym xzaznaczyc na wstepnie ze jestem poczatkujacy i moje pytania > czesto, gesto beda dla wiekszosci banalne. Ale jak to mowia kto pyta > ten nie bladzi:) > Wiec pytanie 1: > - Czy istaieje jaks grupa dyskusyjna dla tak zwanych newbie? > Pytanie 2: > - Jest pogrami ktory to ma wyswietlac Ramke z trzema przyciskami, ktore > to maja za zadanie zmiecniac kolor tla ramki, nestety tego nie robia - > a dlaczego? > > Oto kod programu: > > import java.awt.*; > import java.awt.event.*; > import javax.swing.*; > > public class TestPrzyciskow > { > public static void main(String[] args) > { > RamkaPrzyciskow ramka = new RamkaPrzyciskow(); > ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); > ramka.show(); > } > } > > /** > Ramka, zawierajca panel przycisk? > */ > class RamkaPrzyciskow extends JFrame > { > public RamkaPrzyciskow() > { > setTitle("TestPrzyciskow"); > setSize(SZEROKOSC, WYSOKOSC); > > // docz panel do ramki > > PanelPrzyciskow panel = new PanelPrzyciskow(); > Container powZawartosci = getContentPane(); > powZawartosci.add(panel); > } > > public static final int SZEROKOSC = 300; > public static final int WYSOKOSC = 200; > } > > /** > Panel, zawierajcy trzy przyciski > */ > class PanelPrzyciskow extends JPanel > { > public PanelPrzyciskow() > { > // skonstruuj przyciski > > JButton przyciskZolty = new JButton("Zoltyy"); > JButton przyciskNiebieski = new JButton("Niebieski"); > JButton przyciskCzerwony = new JButton("Czerwony"); > > // docz przyciski do panelu > > add(przyciskZolty); > add(przyciskNiebieski); > add(przyciskCzerwony); > > // skonstruuj dziaania przycisk? > > DzialanieKoloru dzialanieZoltego = new > DzialanieKoloru(Color.yellow); > DzialanieKoloru dzialanieNiebieskiego = new > DzialanieKoloru(Color.blue); > DzialanieKoloru dzialanieCzerwonego = new > DzialanieKoloru(Color.red); > > // przyporzdkuj dziaania do przycisk? > > przyciskZolty.addActionListener(dzialanieZoltego); > przyciskNiebieski.addActionListener(dzialanieNiebi eskiego); > przyciskCzerwony.addActionListener(dzialanieCzerwo nego); > } > } > /** > Suchacz, zmieniajcy kolor ta panelu > */ > class DzialanieKoloru extends JPanel implements ActionListener > { > public DzialanieKoloru(Color k) > { > kolorTla = k; > } > > public void actionPerformed(ActionEvent zdarzenie) > { > setBackground(kolorTla); > repaint(); > } > > private Color kolorTla; > }
dziadek - 05-04-2006 00:04
kakiet wrote: > Witam wszystkich:) > > Chcialbym xzaznaczyc na wstepnie ze jestem poczatkujacy i moje pytania > czesto, gesto beda dla wiekszosci banalne. Ale jak to mowia kto pyta > ten nie bladzi:) > Wiec pytanie 1: > - Czy istaieje jaks grupa dyskusyjna dla tak zwanych newbie? > Pytanie 2: > - Jest pogrami ktory to ma wyswietlac Ramke z trzema przyciskami, ktore > to maja za zadanie zmiecniac kolor tla ramki, nestety tego nie robia - > a dlaczego? > > Oto kod programu: > > import java.awt.*; > import java.awt.event.*; > import javax.swing.*; > > public class TestPrzyciskow > { > public static void main(String[] args) > { > RamkaPrzyciskow ramka = new RamkaPrzyciskow(); > ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); > ramka.show(); > } > } > > /** > Ramka, zawierajca panel przycisk? > */ > class RamkaPrzyciskow extends JFrame > { > public RamkaPrzyciskow() > { > setTitle("TestPrzyciskow"); > setSize(SZEROKOSC, WYSOKOSC); > > // docz panel do ramki > > PanelPrzyciskow panel = new PanelPrzyciskow(); > Container powZawartosci = getContentPane(); > powZawartosci.add(panel); > } > > public static final int SZEROKOSC = 300; > public static final int WYSOKOSC = 200; > } > > /** > Panel, zawierajcy trzy przyciski > */ > class PanelPrzyciskow extends JPanel > { > public PanelPrzyciskow() > { > // skonstruuj przyciski > > JButton przyciskZolty = new JButton("Zoltyy"); > JButton przyciskNiebieski = new JButton("Niebieski"); > JButton przyciskCzerwony = new JButton("Czerwony"); > > // docz przyciski do panelu > > add(przyciskZolty); > add(przyciskNiebieski); > add(przyciskCzerwony); > > // skonstruuj dziaania przycisk? > > DzialanieKoloru dzialanieZoltego = new > DzialanieKoloru(Color.yellow); > DzialanieKoloru dzialanieNiebieskiego = new > DzialanieKoloru(Color.blue); > DzialanieKoloru dzialanieCzerwonego = new > DzialanieKoloru(Color.red); > > // przyporzdkuj dziaania do przycisk? > > przyciskZolty.addActionListener(dzialanieZoltego); > przyciskNiebieski.addActionListener(dzialanieNiebi eskiego); > przyciskCzerwony.addActionListener(dzialanieCzerwo nego); > } > } > /** > Suchacz, zmieniajcy kolor ta panelu > */ > class DzialanieKoloru extends JPanel implements ActionListener > { > public DzialanieKoloru(Color k) > { > kolorTla = k; > } > > public void actionPerformed(ActionEvent zdarzenie) > { > setBackground(kolorTla); > repaint(); > } > > private Color kolorTla; > } zamień linijkę: class DzialanieKoloru extends JPanel implements ActionListener na: private class DzialanieKoloru implements ActionListener
Brzezi - 05-04-2006 00:04
wto, 04 kwi 2006 o 16:25 GMT, dziadek napisał(a):
> zamień linijkę: > class DzialanieKoloru extends JPanel implements ActionListener > na: > private class DzialanieKoloru implements ActionListener
a ty niedosc ze wysylasz dwa DLUGIE posty, gdzie jeden to tylko cytat bez zadnej odpowiedzi, to w drugim taki sam ponad 100linijkowy cytat z towimi 4 linijkami...
na przyszlosc wycinaj to co jest zbedne...
Pozdrawiam Brzezi -- [ E-mail: brzezi@enter.net.pl ][ ] [ Ekg: #3781111 ][ ] [ LinuxUser: #249916 ][ ]
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[ORACLE] RMAN - blad: ORA-19665 i ORA-19664
SQL Server 2005: początkujący programista T-SQL ma problem
Ms SQL Server 2000 i błąd przy nie wypełnionej wartościo w polusmalldatetime
[SUBIEKT] Katastrofalny błąd - padła baza danych lub serwer SQL
TOAD blad polaczenia z serwerem: ORA-01031 insufficient privileges
PostgreSQL Windopws XP SP2 - blad podczas instalacji
Microsoft visual C++ runtime error instalacja coreldraw9 BLAD :(
DBDesigner4 - czy ktoś wie gdzie popełniam bład ?
PgSQL i funkcja dajaca "autoincrement" - blad
load data infile - blad - Mysql
zanotowane.pldoc.pisz.plpdf.pisz.plsulimczyk.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|