public JLabel CustomJLabel(String text) { JLabel label = new JLabel(text); return label; }
public JLabel CustomJLabel(String text, Color color) { JLabel label = new JLabel(text); label.setBackground(color); return label; }
} _________________________________________
Jeg forsøger nu at oprette en objekt af denne type på følgende måde:
centerCenterPanel.add(new CustomJLabel("Løbnummer")); centerCenterPanel.add(new CustomJLabel("1", new Color(255,255,255)));
Men jeg får at vide, at disse konstruktører ikke findes. Hvordan kan det være?
Er det fordi en kontruktør SKAL have returtype void? Hvordan kan jeg så gøre det jeg ønsker? Altså at kunne lave en JLabel-objeck med en anden baggrundsfarve uden at have en reference til objektet?
Du skal aldrig erklære en retur type på en konstruktor, dvs : og derfor skal du nok ændre lidt i arkitekturen
private JLabel label;
public CustomJLabel(String text, Color color) { Jlabel = new JLabel(text); label.setBackground(color); }
public CustomJLabel(String text) { label = new JLabel(text); }
public JLabel getLabel(){ return label; }
også på din brugerflade: CustomJLabel label1 = new CustomJLabel("Løbnummer") CustomJLabel label2 = new CustomJLabel("1", new Color(255,255,255)) centerCenterPanel.add(label1.getLabel()); centerCenterPanel.add(label2.getLabel());
Ja, den måde kunne jeg også godt selv finde frem til. Men man kan altså ikke skaffe en reference til objektet, hvis man vil bare laver: centerCenterPanel.add(new CustomJLabel("Løbnummer"));
super gør at du kan kalde konstruktoren på den Superklasse som du nedarver fra, i dette tilfælde JLabel. Desuden kan du også bruger super til at køre eventuelle metoder som tilhører Superklassen.
Du kunne også bare programmere nogle af metoderne selv og overskrive superklassens, men det er der jo ingen grund til lige her:)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.