/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Class's
Fra : claus reimer


Dato : 16-02-01 02:13

Jeg kunne godt tænke mig at bygge en del af gui'en op nede i class'en
workArea men det eneste jeg for frem er et JPanel uden 400 knapper - kan man
gører det på den måde / er det smart ? - eller har jeg misforstået det med
class'er ?

Hvad menes der egentlig med extend ?

public class GuiTest extends JApplet {

public void init() {
JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
desk.setDesktopManager(new DefaultDesktopManager());

createMenuBar();

workArea wa = new workArea();
wa.setBounds(0,0,695,502);
wa.setVisible(true);
desk.add(wa);
}
}

class workArea extends JPanel {

public void init() {
JPanel p = new JPanel();
p.setLayout(new GridLayout(20,20));
for (int a=0;a<400;a++) {
p.add(new JButton("But" + Integer.toString(a)));
}
}
}




 
 
Thomas Sejr Jensen (15-02-2001)
Kommentar
Fra : Thomas Sejr Jensen


Dato : 15-02-01 22:49

Når en klasse nedarver/extends en anden klasse får den stillet alle den
anden klasses public og protected attributter/metoder til rådighed.
"claus reimer" <claus@dotzero.dk> skrev i en meddelelse
news:8hTi6.95$ZL4.4072414223@news.euroconnect.net...
> Jeg kunne godt tænke mig at bygge en del af gui'en op nede i class'en
> workArea men det eneste jeg for frem er et JPanel uden 400 knapper - kan
man
> gører det på den måde / er det smart ? - eller har jeg misforstået det
med
> class'er ?
>
> Hvad menes der egentlig med extend ?
>
> public class GuiTest extends JApplet {
>
> public void init() {
> JDesktopPane desk = new JDesktopPane();
> setContentPane(desk);
> desk.setDesktopManager(new DefaultDesktopManager());
>
> createMenuBar();
>
> workArea wa = new workArea();
> wa.setBounds(0,0,695,502);
> wa.setVisible(true);
> desk.add(wa);
> }
> }
>
> class workArea extends JPanel {
>
> public void init() {
> JPanel p = new JPanel();
> p.setLayout(new GridLayout(20,20));
> for (int a=0;a<400;a++) {
> p.add(new JButton("But" + Integer.toString(a)));
> }
> }
> }
>
>
>



Ulrik Magnusson (15-02-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 15-02-01 22:59

claus reimer wrote:

> Jeg kunne godt tænke mig at bygge en del af gui'en op nede i class'en
> workArea men det eneste jeg for frem er et JPanel uden 400 knapper - kan man
> gører det på den måde / er det smart ? - eller har jeg misforstået det med
> class'er ?

Det er vel helt fint at uddelegere arbejdet..

> Hvad menes der egentlig med extend ?

Det betyder nogenlunde: "'s skaber er ikke helt tilfreds med (og vil derfor lave
en speciel version af) ".
Der står noget om nedarvning her:

http://www.javasoft.com/docs/books/tutorial/java/concepts/inheritance.html

> class workArea extends JPanel {
>
> public void init() {
> JPanel p = new JPanel();
> p.setLayout(new GridLayout(20,20));
> for (int a=0;a<400;a++) {
> p.add(new JButton("But" + Integer.toString(a)));
> }
> }
> }

Hvis du ændrer workArea til følgende, skulle det efter min bedste overbevisning
virke (p er fjernet - workArea er jo selv et JPanel):

class workArea extends JPanel {
public void init() {
setLayout(new GridLayout(20,20));
for (int a=0;a<400;a++) {
add(new JButton("But" + Integer.toString(a)));
}
}
}

Ulrik Magnusson

--
"Look! Ducks in the lake"
'Agent Cooper' in Twin Peaks - Lynch, 1990
Visit my home page: http://www.geocities.com/ulrikm



claus reimer (20-02-2001)
Kommentar
Fra : claus reimer


Dato : 20-02-01 03:20

> Hvis du ændrer workArea til følgende, skulle det efter min bedste
overbevisning
> virke (p er fjernet - workArea er jo selv et JPanel):
>
> class workArea extends JPanel {
> public void init() {
> setLayout(new GridLayout(20,20));
> for (int a=0;a<400;a++) {
> add(new JButton("But" + Integer.toString(a)));
> }
> }
> }
>
> Ulrik Magnusson
>
> --
> "Look! Ducks in the lake"
> 'Agent Cooper' in Twin Peaks - Lynch, 1990
> Visit my home page: http://www.geocities.com/ulrikm
>

det gør det også ( Fedt ) men en lille detajle, den viser kun knapperne hvis
man kalder init

workArea wa = new workArea();
wa.init()
wa.setVisible(true);
add(wa);

burde den ikke automatisk selv kalde init ?

og hvad hvis man nu f.eks ville gi den en Layout Manager - jeg har prøvet
med

workArea wa = new workArea(new GridLayout(1,1));

men compileren brokker sig - jeg synes nu ellers selv at det ville havde
været rimeligt logisk på den måde :)







Ulrik Magnusson (19-02-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 19-02-01 19:05

claus reimer wrote:

> men en lille detajle, den viser kun knapperne hvis
> man kalder init
>
> workArea wa = new workArea();
> wa.init()
> wa.setVisible(true);
> add(wa);
> burde den ikke automatisk selv kalde init ?

Nej - en Applet er speciel i og med at init() kaldes af en browser eller
appletviewer. For alle andre klasser er det kun konstruktoren, der
kaldes automatisk.

Du burde lave
public void init()
om til
public workArea()
- som er en konstruktor der bliver kaldt når du laver et workArea objekt med
new workArea()

> og hvad hvis man nu f.eks ville gi den en Layout Manager - jeg har prøvet
> med
> workArea wa = new workArea(new GridLayout(1,1));
> men compileren brokker sig - jeg synes nu ellers selv at det ville havde
> været rimeligt logisk på den måde :)

workArea har ingen konstruktor der tager en LayoutManager som argument,
men du kan sætte den med wa.setLayout(new GridLayout(1,1)) eller i
workAreas konstruktor, som du allerede gør:

Her er en version med 2 konstruktorer, hvor
workArea wa = new workArea(new GridLayout(1,1));
er muligt

class workArea extends JPanel
{
//konstruktor 1 - bruges som
// workArea wa = new workArea();
//GridLayout(20,20) er default layout
public workArea(){
setLayout(new GridLayout(20,20));
for (int a=0;a<400;a++){
add(new JButton("But" + Integer.toString(a)));
}
}

//konstruktor 2 - bruges som
// workArea wa = new workArea( new GridLayout(1,1) );
public workArea( LayoutManager layout ){
setLayout(layout);
for (int a=0;a<400;a++){
add(new JButton("But" + Integer.toString(a)));
}
}
}

Ulrik Magnusson

--
What the world needs now is programs that WORK, not ones that don't
work, but don't work 5% faster.
Roedy Green
Visit my home page: http://www.geocities.com/ulrikm



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste