/ 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
NEWBIE: Problemer med app.
Fra : Kasper M


Dato : 27-02-01 20:35

Jeg er begyndt på at lave en app. men allerede før jeg fik vist noget
på skærmen gik der lort i den.. :(
Programmet compilerer fint?!, men når jeg forsøger at execute det
giver det mig følgende fejlmelding:

Exception in thread "main" java.lang.Error: Do not use
HeaderCreator.add() use HeaderCreator.getContentPane().setLayout()
instead.
   at javax.swing.JFrame.createRootPaneException<JFrame.java:333>
   at javax.swing.JFrame.setLayout<JFrame.java.394>
   at HeaderCreator.<init><HeaderCreator.java:22>
   at HeaderCreator.main<HeaderCreator.java:95>

Jeg har smidt en del af mit program ind nedenunder:

------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class HeaderCreator extends JFrame {

   HeaderCreator(String frameTitle) {
   //(...)
      super(frameTitle);

      GridBagLayout gridBag = new GridBagLayout();
      GridBagConstraints gc = new GridBagConstraints();
      this.setLayout(gridBag); //line 33 of app.
   //(...)   
   }

   public static void main(String[] args) { //line 94 of app
    JFrame thisFrame = new HeaderCreator("bla, bla");
   
    WindowListener listen = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
    }
    };
   }
}

Jeg bruger et nyinstalleret program v. navn Visual Cafe, og kører
win2000... På forhånd tak for hjælpen.... Kasper

 
 
Thorkild Sørensen (27-02-2001)
Kommentar
Fra : Thorkild Sørensen


Dato : 27-02-01 22:05

Jeg kender godt problemet og har en formodning om at der er andre der også
gør. Problemet er at du ikke kan adde komponenter eller layout-managerer
direkte til en JFrame. Java-folkene har valgt at en frame skal have en
såkaldt content pane, som er den container du kan adde ting til.
Fremgangsmåden er som der faktisk står at du skal køre metoden
getContentPane på JFrame. Da du som regel vil adde mere end en ting til en
JFrame kan det være en god ide at gemme denne container i variabel så du
ikke skal lave getContentPane hver gang. Et eksempel kunne være:

public class HeaderCreator extends JFrame {
private Container pane;
HeaderCreator(String frameTitle) {
//(...)
super(frameTitle);

GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints gc = new GridBagConstraints();
pane = this.getContentPane(); //this unødvendig, men
alligevel
pane.setLayout(gridBag); //line 33 of app.
pane.add(new JLabel("Hello World!"));
//(...)
}

Hilsen Thorkild

Kasper M skriver:

> Jeg er begyndt på at lave en app. men allerede før jeg fik vist noget
> på skærmen gik der lort i den.. :(
> Programmet compilerer fint?!, men når jeg forsøger at execute det
> giver det mig følgende fejlmelding:
>
> Exception in thread "main" java.lang.Error: Do not use
> HeaderCreator.add() use HeaderCreator.getContentPane().setLayout()
> instead.
> at javax.swing.JFrame.createRootPaneException<JFrame.java:333>
> at javax.swing.JFrame.setLayout<JFrame.java.394>
> at HeaderCreator.<init><HeaderCreator.java:22>
> at HeaderCreator.main<HeaderCreator.java:95>
>
> Jeg har smidt en del af mit program ind nedenunder:
>
> ------------------------------------------
> import java.awt.*;
> import java.awt.event.*;
> import javax.swing.*;
>
> public class HeaderCreator extends JFrame {
>
> HeaderCreator(String frameTitle) {
> //(...)
> super(frameTitle);
>
> GridBagLayout gridBag = new GridBagLayout();
> GridBagConstraints gc = new GridBagConstraints();
> this.setLayout(gridBag); //line 33 of app.
> //(...)
> }
>
> public static void main(String[] args) { //line 94 of app
> JFrame thisFrame = new HeaderCreator("bla, bla");
>
> WindowListener listen = new WindowAdapter() {
> public void windowClosing(WindowEvent e) {
> System.exit(0);
> }
> };
> }
> }
>
> Jeg bruger et nyinstalleret program v. navn Visual Cafe, og kører
> win2000... På forhånd tak for hjælpen.... Kasper


Kasper M (28-02-2001)
Kommentar
Fra : Kasper M


Dato : 28-02-01 15:52

Tak torkild.... Du er min helt :)


On Tue, 27 Feb 2001 21:04:36 GMT, Thorkild =?iso-8859-1?Q?S=F8rensen?=
<tgs@mailserver.dk> wrote:

>Jeg kender godt problemet og har en formodning om at der er andre der også
>gør. Problemet er at du ikke kan adde komponenter eller layout-managerer
>direkte til en JFrame. Java-folkene har valgt at en frame skal have en
>såkaldt content pane, som er den container du kan adde ting til.
>Fremgangsmåden er som der faktisk står at du skal køre metoden
>getContentPane på JFrame. Da du som regel vil adde mere end en ting til en
>JFrame kan det være en god ide at gemme denne container i variabel så du
>ikke skal lave getContentPane hver gang. Et eksempel kunne være:
>
>public class HeaderCreator extends JFrame {
>private Container pane;
> HeaderCreator(String frameTitle) {
> //(...)
> super(frameTitle);
>
> GridBagLayout gridBag = new GridBagLayout();
> GridBagConstraints gc = new GridBagConstraints();
> pane = this.getContentPane(); //this unødvendig, men
>alligevel
> pane.setLayout(gridBag); //line 33 of app.
> pane.add(new JLabel("Hello World!"));
> //(...)
> }
>
>Hilsen Thorkild
>
>Kasper M skriver:
>
>> Jeg er begyndt på at lave en app. men allerede før jeg fik vist noget
>> på skærmen gik der lort i den.. :(
>> Programmet compilerer fint?!, men når jeg forsøger at execute det
>> giver det mig følgende fejlmelding:
>>
>> Exception in thread "main" java.lang.Error: Do not use
>> HeaderCreator.add() use HeaderCreator.getContentPane().setLayout()
>> instead.
>> at javax.swing.JFrame.createRootPaneException<JFrame.java:333>
>> at javax.swing.JFrame.setLayout<JFrame.java.394>
>> at HeaderCreator.<init><HeaderCreator.java:22>
>> at HeaderCreator.main<HeaderCreator.java:95>
>>
>> Jeg har smidt en del af mit program ind nedenunder:
>>
>> ------------------------------------------
>> import java.awt.*;
>> import java.awt.event.*;
>> import javax.swing.*;
>>
>> public class HeaderCreator extends JFrame {
>>
>> HeaderCreator(String frameTitle) {
>> //(...)
>> super(frameTitle);
>>
>> GridBagLayout gridBag = new GridBagLayout();
>> GridBagConstraints gc = new GridBagConstraints();
>> this.setLayout(gridBag); //line 33 of app.
>> //(...)
>> }
>>
>> public static void main(String[] args) { //line 94 of app
>> JFrame thisFrame = new HeaderCreator("bla, bla");
>>
>> WindowListener listen = new WindowAdapter() {
>> public void windowClosing(WindowEvent e) {
>> System.exit(0);
>> }
>> };
>> }
>> }
>>
>> Jeg bruger et nyinstalleret program v. navn Visual Cafe, og kører
>> win2000... På forhånd tak for hjælpen.... Kasper
>


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste