|
| 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
>
| |
|
|