/ 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
Hvordan compiler jeg eksemplet?
Fra : No1


Dato : 26-06-03 14:17

Der er et eksempel her:
http://javaalmanac.com/egs/javax.swing.text/style_ListStyles2.html
som jeg gerne vil compile.

Jeg kan ikke lige overskue, hvad jeg skal gøre for at få et fungerende
eksempel ud af det. Jeg har forsøgt at smide det hele ind i klasse der
extender JFrame og så add Textpanen, hvilket giver ca. 40 fejl. Jeg har
importeret javax.swing.* og java.awt.*



 
 
Robert Larsen (26-06-2003)
Kommentar
Fra : Robert Larsen


Dato : 26-06-03 14:19

No1 wrote:

> Der er et eksempel her:
> http://javaalmanac.com/egs/javax.swing.text/style_ListStyles2.html
> som jeg gerne vil compile.
>
> Jeg kan ikke lige overskue, hvad jeg skal gøre for at få et fungerende
> eksempel ud af det. Jeg har forsøgt at smide det hele ind i klasse der
> extender JFrame og så add Textpanen, hvilket giver ca. 40 fejl. Jeg har
> importeret javax.swing.* og java.awt.*
>
>
Kunne du ikke lige poste fejlene og et par linjer kode før og efter
fejlene ?
Ellers er det ret svært at sige, hvad der går galt.

Robert


No1 (26-06-2003)
Kommentar
Fra : No1


Dato : 26-06-03 15:05

> Kunne du ikke lige poste fejlene og et par linjer kode før og efter
> fejlene ?
> Ellers er det ret svært at sige, hvad der går galt.

at importere java.swing.text.* fjernede ca. 40% af fejlene, så nu er der kun
28 tilbage.

-------------- kode start -----------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util; // der anvendes bla. ArrayList

public class Popstyle extends JFrame {

public static void main(String args[]) {
Popstyle window = new Popstyle();

window.setTitle("Popstyle");
window.setVisible(true);
}

public Popstyle() {
Container contentPane = getContentPane();
GridLayout layout = new GridLayout(0,1);
contentPane.setLayout(layout);

JTextPane textPane = new JTextPane();
contentPane.add(textPane);

// Herfra er blot indsat eksemplet fra
http://javaalmanac.com/egs/javax.swing.text/style_ListStyles2.html

// Makes text red
Style style = textPane.addStyle("Red", null);
StyleConstants.setForeground(style, Color.red);

// Inherits from "Red"; makes text red and underlined
style = textPane.addStyle("Red Underline", style);
StyleConstants.setUnderline(style, true);

// Makes text 24pts
style = textPane.addStyle("24pts", null);
StyleConstants.setFontSize(style, 24);

// Makes text 12pts
style = textPane.addStyle("12pts", null);
StyleConstants.setFontSize(style, 12);

// Makes text italicized
style = textPane.addStyle("Italics", null);
StyleConstants.setItalic(style, true);

// Makes text bold
style = textPane.addStyle("Bold", null);
StyleConstants.setBold(style, true);

JTextPane c = textPane;
// Construct a sorted list of style names
DefaultStyledDocument doc =
(DefaultStyledDocument)textPane.getDocument();
java.util.List l = new ArrayList();
Enumeration enum = doc.getStyleNames();
while (enum.hasMoreElements()) {
l.add(enum.nextElement());
}
Collections.sort(l);

// First sub menu applies character attributes
final JPopupMenu menu = new JPopupMenu();
JMenu submenu = new JMenu("Character");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
CHARACTER)));
}
menu.add(submenu);

// Second sub menu applies paragraph attributes
submenu = new JMenu("Paragraph");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
PARAGRAPH)));
}
menu.add(submenu);

// Third submenu applies logical attributes
submenu = new JMenu("Logical");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
LOGICAL)));
}
menu.add(submenu);

// Add a listener to display pop-up
textPane.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
if (evt.isPopupTrigger()) {
menu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
public void mouseReleased(MouseEvent evt) {
if (evt.isPopupTrigger()) {
menu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});

static final int CHARACTER = 1;
static final int PARAGRAPH = 2;
static final int LOGICAL = 3;

// Assumes the style name is the same as the action name.
// The type specifies how the style should be applied.
// The style is applied to the text within the selection.
public static class DoStyleAction extends
StyledEditorKit.StyledTextAction {
int type;
public DoStyleAction(String styleName, int type) {
super(styleName);
this.type = type;
}
public void actionPerformed(ActionEvent e) {
JTextPane c = (JTextPane)getEditor(e);
if (c != null) {
String styleName = e.getActionCommand();
StyledDocument doc = (StyledDocument)c.getDocument();

switch (type) {
case CHARACTER:
c.setCharacterAttributes(doc.getStyle(styleName), true);
break;
case PARAGRAPH:
c.setParagraphAttributes(doc.getStyle(styleName), true);
break;
case LOGICAL:
c.setLogicalStyle(doc.getStyle(styleName));
break;
}
}
}
}

}
}
-------------- kode slut -----------------

-------------- fejl start -----------------
[sti...]\popuptest\Popstyle.java:97: illegal start of expression
static final int CHARACTER = 1;
^
[sti...]\popuptest\Popstyle.java:98: illegal start of expression
static final int PARAGRAPH = 2;
^
[sti...]\popuptest\Popstyle.java:99: illegal start of expression
static final int LOGICAL = 3;
^
[sti...]\popuptest\Popstyle.java:104: illegal start of expression
public static class DoStyleAction extends
StyledEditorKit.StyledTextAction {
^
[sti...]\popuptest\Popstyle.java:104: ';' expected
public static class DoStyleAction extends
StyledEditorKit.StyledTextAction {
^
[sti...]\popuptest\Popstyle.java:5: cannot resolve symbol
symbol : class util
location: package java
import java.util; // der anvendes bla. ArrayList
^
[sti...]\popuptest\Popstyle.java:54: cannot resolve symbol
symbol : class ArrayList
location: class Popstyle
java.util.List l = new ArrayList();
^
[sti...]\popuptest\Popstyle.java:55: cannot resolve symbol
symbol : class Enumeration
location: class Popstyle
Enumeration enum = doc.getStyleNames();
^
[sti...]\popuptest\Popstyle.java:59: cannot resolve symbol
symbol : variable Collections
location: class Popstyle
Collections.sort(l);
^
..\DoStyleAction.java:33: 'class' or 'interface' expected
}
^
..\DoStyleAction.java:33: 'class' or 'interface' expected
}
^
..\DoStyleAction.java:6: modifier static not allowed here
public static class DoStyleAction extends StyledEditorKit.StyledTextAction {
^
..\DoStyleAction.java:6: package StyledEditorKit does not exist
public static class DoStyleAction extends StyledEditorKit.StyledTextAction {
^
..\DoStyleAction.java:12: cannot resolve symbol
symbol : class ActionEvent
location: class DoStyleAction
public void actionPerformed(ActionEvent e) {
^
[sti...]\popuptest\Popstyle.java:65: cannot resolve symbol
symbol : variable CHARACTER
location: class Popstyle
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
CHARACTER)));
^
[sti...]\popuptest\Popstyle.java:65: reference to JMenuItem is ambiguous,
both method JMenuItem(javax.swing.Icon) in javax.swing.JMenuItem and method
JMenuItem(javax.swing.Action) in javax.swing.JMenuItem match
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
CHARACTER)));
^
[sti...]\popuptest\Popstyle.java:72: cannot resolve symbol
symbol : variable PARAGRAPH
location: class Popstyle
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
PARAGRAPH)));
^
[sti...]\popuptest\Popstyle.java:72: reference to JMenuItem is ambiguous,
both method JMenuItem(javax.swing.Icon) in javax.swing.JMenuItem and method
JMenuItem(javax.swing.Action) in javax.swing.JMenuItem match
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
PARAGRAPH)));
^
[sti...]\popuptest\Popstyle.java:79: cannot resolve symbol
symbol : variable LOGICAL
location: class Popstyle
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
LOGICAL)));
^
[sti...]\popuptest\Popstyle.java:79: reference to JMenuItem is ambiguous,
both method JMenuItem(javax.swing.Icon) in javax.swing.JMenuItem and method
JMenuItem(javax.swing.Action) in javax.swing.JMenuItem match
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
LOGICAL)));
^
[sti...]\popuptest\Popstyle.java:117: cannot resolve symbol
symbol : variable CHARACTER
location: class DoStyleAction
case CHARACTER:
^
[sti...]\popuptest\Popstyle.java:120: cannot resolve symbol
symbol : variable PARAGRAPH
location: class DoStyleAction
case PARAGRAPH:
^
[sti...]\popuptest\Popstyle.java:123: cannot resolve symbol
symbol : variable LOGICAL
location: class DoStyleAction
case LOGICAL:
^
..\DoStyleAction.java:16: cannot resolve symbol
symbol : class StyledDocument
location: class DoStyleAction
StyledDocument doc = (StyledDocument)c.getDocument();
^
..\DoStyleAction.java:16: cannot resolve symbol
symbol : class StyledDocument
location: class DoStyleAction
StyledDocument doc = (StyledDocument)c.getDocument();
^
..\DoStyleAction.java:19: cannot resolve symbol
symbol : variable CHARACTER
location: class DoStyleAction
case CHARACTER:
^
..\DoStyleAction.java:22: cannot resolve symbol
symbol : variable PARAGRAPH
location: class DoStyleAction
case PARAGRAPH:
^
..\DoStyleAction.java:25: cannot resolve symbol
symbol : variable LOGICAL
location: class DoStyleAction
case LOGICAL:
^
28 errors

Tool completed with exit code 1

-------------- fejl slut -----------------



Mikkel Bundgaard (26-06-2003)
Kommentar
Fra : Mikkel Bundgaard


Dato : 26-06-03 15:55

On Thu, 26 Jun 2003 16:05:04 +0200, No1 wrote:

>> Kunne du ikke lige poste fejlene og et par linjer kode før og efter
>> fejlene ?
>> Ellers er det ret svært at sige, hvad der går galt.
>
> at importere java.swing.text.* fjernede ca. 40% af fejlene, så nu er der kun
> 28 tilbage.
Nedenstående burde virke. Jeg har importeret flyttet konstant erkæringerne
ud af metoden. Lavet java.util om til java.util.*. Fjernet public fra
"public static class DoStyleAction", da der kun må være en public klasse i
en fil.... og et par andre ting. Dog mangler der stadig en exit(0) for at
lukke applikationen rigtigt ned

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util.*; // der anvendes bla. ArrayList => *

public class Popstyle extends JFrame {
static final int CHARACTER = 1;
static final int PARAGRAPH = 2;
static final int LOGICAL = 3;

public static void main(String args[]) {
Popstyle window = new Popstyle();

window.setTitle("Popstyle");
window.setVisible(true);
window.setSize(600,400);
}

public Popstyle() {
Container contentPane = getContentPane();
   GridLayout layout = new GridLayout(0,1);
contentPane.setLayout(layout);
   
   JTextPane textPane = new JTextPane();
   contentPane.add(textPane);
   
   // Herfra er blot indsat eksemplet fra
   //http://javaalmanac.com/egs/javax.swing.text/style_ListStyles2.html
   
   // Makes text red
   Style style = textPane.addStyle("Red", null);
   StyleConstants.setForeground(style, Color.red);
   
   // Inherits from "Red"; makes text red and underlined
   style = textPane.addStyle("Red Underline", style);
   StyleConstants.setUnderline(style, true);

   // Makes text 24pts
   style = textPane.addStyle("24pts", null);
   StyleConstants.setFontSize(style, 24);
   
   // Makes text 12pts
   style = textPane.addStyle("12pts", null);
   StyleConstants.setFontSize(style, 12);
   
   // Makes text italicized
   style = textPane.addStyle("Italics", null);
   StyleConstants.setItalic(style, true);
   
   // Makes text bold
   style = textPane.addStyle("Bold", null);
   StyleConstants.setBold(style, true);
   
   JTextPane c = textPane;
// Construct a sorted list of style names
   DefaultStyledDocument doc =
    (DefaultStyledDocument)textPane.getDocument();
java.util.List l = new ArrayList();
Enumeration enum = doc.getStyleNames();
while (enum.hasMoreElements()) {
l.add(enum.nextElement());
}
Collections.sort(l);

// First sub menu applies character attributes
final JPopupMenu menu = new JPopupMenu();
JMenu submenu = new JMenu("Character");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
CHARACTER)));
}
menu.add(submenu);

// Second sub menu applies paragraph attributes
submenu = new JMenu("Paragraph");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
PARAGRAPH)));
}
menu.add(submenu);

// Third submenu applies logical attributes
submenu = new JMenu("Logical");
for (int i=0; i<l.size(); i++) {
submenu.add(new JMenuItem(new DoStyleAction((String)l.get(i),
LOGICAL)));
}
menu.add(submenu);

// Add a listener to display pop-up
textPane.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
if (evt.isPopupTrigger()) {
menu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
public void mouseReleased(MouseEvent evt) {
if (evt.isPopupTrigger()) {
menu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});
}

// Assumes the style name is the same as the action name.
// The type specifies how the style should be applied.
// The style is applied to the text within the selection.
static class DoStyleAction extends
             StyledEditorKit.StyledTextAction {
   int type;
   public DoStyleAction(String styleName, int type) {
    super(styleName);
    this.type = type;
   }
   public void actionPerformed(ActionEvent e) {
    JTextPane c = (JTextPane)getEditor(e);
    if (c != null) {
      String styleName = e.getActionCommand();
      StyledDocument doc = (StyledDocument)c.getDocument();
      
      switch (type) {
      case CHARACTER:
       c.setCharacterAttributes(doc.getStyle(styleName), true);
       break;
      case PARAGRAPH:
       c.setParagraphAttributes(doc.getStyle(styleName), true);
       break;
      case LOGICAL:
       c.setLogicalStyle(doc.getStyle(styleName));
       break;
      }
    }
   }
}
}

--
Mikkel Bundgaard
Student at IT University of Copenhagen
Codito, Ergo Sum

No1 (26-06-2003)
Kommentar
Fra : No1


Dato : 26-06-03 22:01

> Nedenstående burde virke. Jeg har importeret flyttet konstant erkæringerne
> ud af metoden. Lavet java.util om til java.util.*. Fjernet public fra
> "public static class DoStyleAction", da der kun må være en public klasse i
> en fil.... og et par andre ting. Dog mangler der stadig en exit(0) for at
> lukke applikationen rigtigt ned

Tak. Efter at have fjernet layout manageren kunne jeg også se JTextPane'en




Thomas (26-06-2003)
Kommentar
Fra : Thomas


Dato : 26-06-03 14:47


> Jeg kan ikke lige overskue, hvad jeg skal gøre for at få et fungerende
> eksempel ud af det. Jeg har forsøgt at smide det hele ind i klasse der
> extender JFrame og så add Textpanen, hvilket giver ca. 40 fejl. Jeg har
> importeret javax.swing.* og java.awt.*

Såvidt jeg lige kan se, skal du også importere

javax.swing.text // der er noget med Style og StyleConstant
java.awt.event // der er noget eventhåndtering bla. MouseListener bliver
anvendt
java.util // der anvendes bla. ArrayList

Øhhh så kan jeg umiddelbart ikke se flere. Men hvad ved jeg?(retorisk
spørgsmål)

Mvh
Thomas




No1 (26-06-2003)
Kommentar
Fra : No1


Dato : 26-06-03 15:10

> javax.swing.text // der er noget med Style og StyleConstant
> java.awt.event // der er noget eventhåndtering bla. MouseListener
bliver
> anvendt
> java.util // der anvendes bla. ArrayList
>
> Øhhh så kan jeg umiddelbart ikke se flere. Men hvad ved jeg?(retorisk
> spørgsmål)

Tak for det.

Jeg synes ikke at det er så smart med kode stumper, hvor der ikke angives
hvilke klasser der bruges, eller hvordan de skal bruges. Jeg har set det
før, men nogle steder har er der også hele klasser lige til at compile.

Hvis man er lidt mere erfaren Java programmør (5år+ eller noget i den
retning), er det så nemt som ingen ting at bruge et eksempel som det jeg har
henvist til? På den anden side, er den slags eksempler ikke netop henvendt
til folk der ikke har mange års erfaring?

Hvad synes I?



Robert Larsen (26-06-2003)
Kommentar
Fra : Robert Larsen


Dato : 26-06-03 16:23

No1 wrote:
> Hvis man er lidt mere erfaren Java programmør (5år+ eller noget i den
> retning), er det så nemt som ingen ting at bruge et eksempel som det jeg har
> henvist til?

Hmmmm...det er vel forskelligt fra person til person. Jeg synes ikke det
er svært, man skal bare lære at tolke compilerens informationer. Hvis
den ikke kan finde en klasse, er det nok fordi, den ikke er importeret,
eller fordi klassen ikke er med i éns CLASSPATH. Lær at forstå din
compiler, så er det meget mindre et problem at bruge andres kode.

> På den anden side, er den slags eksempler ikke netop henvendt
> til folk der ikke har mange års erfaring?

Nej, men kode stumper er ofte for folk med i hvert fald en smule
erfaring, men man behøver ikke at være ekspert (du nævner selv fem år,
men det er meget lang tid). Resten får hele programmer med både kode og
informationer om, hvordan de compiler det.
Hav tålmodighed, hvis du hænger i tager det faktisk ikke så lang tid at
lære at programmere


Robert


No1 (26-06-2003)
Kommentar
Fra : No1


Dato : 26-06-03 22:07

> > På den anden side, er den slags eksempler ikke netop henvendt
> > til folk der ikke har mange års erfaring?
>
> Nej, men kode stumper er ofte for folk med i hvert fald en smule
> erfaring, men man behøver ikke at være ekspert (du nævner selv fem år,
> men det er meget lang tid).

Jeg synes blot at det er en rimelig besværlig kodestump. De fleste
kodestumper jeg har støt på, har jeg ummiddelbart kunnet smide ind og
compile. Ellers har det krævet 5 min. arbejde eller lign. Den her er en af
dem der har voldt flest problemer. Måske er det bare tilfældigt.

Dog er der også nogle der bygger på ældre Java klasser. Og hvis man skal
gætte sig frem til en pakke som ikke engang findes i ens SDK, så er det lidt
for besværligt synes jeg. Hvis der bliver fortalt hvilke pakker der bliver
brugt, fortæller compilerern i det mindste om den kan finde dem og om de er
depreciated osv.

> Resten får hele programmer med både kode og
> informationer om, hvordan de compiler det.
Den sætning forstår jeg ikke.

> Hav tålmodighed, hvis du hænger i tager det faktisk ikke så lang tid at
> lære at programmere

Men lang tid at mestre det. Jeg har programmeret i rimelig lang tid, over 5
år, fortrinsvis PHP&SQL. Men startede først med Java for ca. halvandet år
siden. Dog har jeg ikke lavet så meget i Java endnu.



Robert Larsen (26-06-2003)
Kommentar
Fra : Robert Larsen


Dato : 26-06-03 22:27

No1 wrote:

>>Resten får hele programmer med både kode og
>>informationer om, hvordan de compiler det.
>
> Den sætning forstår jeg ikke.

hehe....ok jeg prøver igen.
Jeg mente at mange der lister kodestumper går ud fra at du som
programmør ved, at hvis der bruges en Vector så skal du importere noget
fra java.util og at du nok selv kan finde ud af de småting som mangler i
kodestumpen.
Resten AF EKSEMPLERNE går mere i dybden og kommer med hele compilérbare
programmer med main metode og hele svineriet og forklarer, hvordan du
sætter CLASSPATH op, hvilke parametre der skal på compileren og hvordan
du kører programmet.

>
>>Hav tålmodighed, hvis du hænger i tager det faktisk ikke så lang tid at
>>lære at programmere
>
>
> Men lang tid at mestre det. Jeg har programmeret i rimelig lang tid, over 5
> år, fortrinsvis PHP&SQL. Men startede først med Java for ca. halvandet år
> siden. Dog har jeg ikke lavet så meget i Java endnu.
>

Øvelse gør mester


Robert




Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste