Probléme classe interne

neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004 - 29 mars 2004 à 11:37
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 30 mars 2004 à 09:31
Bonjour, j'ai un probléme dans une applet qui fait un print, quand je compil j'ai cette erreur "cannot resolve symbol au niveau de book.append(psb, pf);"
dans mon code j'ai ceci
Book book = new Book();
PrintText psb = new PrintText(stars);
book.append(psb, pf); // print stars

apparament cela vien de ma classe interne PrintText qui est comme ceci :
public class PrintText {
public PrintText(String s) {
textToPrint = s;
}
}
apparament le premier paramétre de append (psb) "painter - the Printable instance that renders the page" n'est pas correct. Quelqu'un peut m'aider? Merci d'avance.

9 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
29 mars 2004 à 13:08
Salut,

il te manque peut être un import à moins que tu te sois trompé sur les paramètres de append.
0
neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004
29 mars 2004 à 14:01
J'ai regarder, je ne vois pas ou peut être l'erreur mais je suis assez nul sur le principe de class internet, je ne sais po trop ou la fermé. Voici le code, si quelqu'un voit les erreurs que j'ai fait sa serai cool.

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import java.awt.print.*;
import javax.print.PrintService;
import java.util.StringTokenizer;

public class PrintTest extends Applet implements ActionListener,Printable {
private boolean isStandalone = false;
final static String stars= "****";
private String textToPrint= stars;
Button test;

//applet constructor
public PrintTest() {
}

//get parameter
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

//intitialisation component
private void jbInit() throws Exception {
}

//get information applet
public String getAppletInfo() {
return "Print Test";
}

//get information parameter
public String[][] getParameterInfo() {
return null;
}

//intern class
public class PrintText {
public PrintText(String s) {
textToPrint = s;
}
}

//initialisation
public void init() {
setBackground(Color.white);
test = new Button("Test");
add(test);
test.addActionListener(this);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}

//event
public void actionPerformed(ActionEvent e) {

if (e.getSource() == test) {
//textToPrint= stars;
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = pj.defaultPage();
Paper paper = pf.getPaper();
double ph = paper.getHeight();
double pw = paper.getWidth();
int x = 36;
int y = 36;
paper.setImageableArea( (double) x, (double) y, pw - 2 * (double) x,
ph - 2 * (double) y);

pf.setPaper(paper);
PrintTest.PrintText psb = new PrintTest.PrintText(stars);
Book book = new Book();
book.append(psb,pf); // print stars
pj.setPageable(book);
printString(pj);
}
}

//print
public int print(Graphics g, PageFormat format, int pageIndex) {

if (pageIndex >= 1)
return Printable.NO_SUCH_PAGE;
int ix = (int) format.getImageableX();
int iy = (int) format.getImageableY();

FontMetrics fM = g.getFontMetrics();
int ascent = (int) fM.getAscent();

if (pageIndex < 1) {
g.setColor(Color.black);
g.drawString(this.textToPrint, ix, iy + ascent);
}

return Printable.PAGE_EXISTS;
}

private static void printString(PrinterJob printerJob) {
/*
Get initialized PrinterJob
*/
if (printerJob.printDialog()) {
String printerName = getPrinterName(getPrinterInfo(printerJob));
try {
printerJob.print();
}
catch (PrinterException pe) {
}
}
}

private static String getPrinterInfo(PrinterJob pj) {

PrintService printer = pj.getPrintService(); // get printer
PageFormat pageFormat = pj.defaultPage();
Paper paper = pageFormat.getPaper();
return printer.toString(); // get printername
}

private static String getPrinterName(String s) {
StringTokenizer sTok = new StringTokenizer(s, ":");
String printerName = s;
if (sTok.countTokens() > 1) {
while (sTok.hasMoreTokens()) {
printerName = sTok.nextToken();
}
}
return printerName;
}
}
0
neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004
29 mars 2004 à 14:02
J'ai regarder, je ne vois pas ou peut être l'erreur mais je suis assez nul sur le principe de class internet, je ne sais po trop ou la fermé. Voici le code, si quelqu'un voit les erreurs que j'ai fait sa serai cool.

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import java.awt.print.*;
import javax.print.PrintService;
import java.util.StringTokenizer;

public class PrintTest extends Applet implements ActionListener,Printable {
private boolean isStandalone = false;
final static String stars= "****";
private String textToPrint= stars;
Button test;

//applet constructor
public PrintTest() {
}

//get parameter
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

//intitialisation component
private void jbInit() throws Exception {
}

//get information applet
public String getAppletInfo() {
return "Print Test";
}

//get information parameter
public String[][] getParameterInfo() {
return null;
}

//intern class
public class PrintText {
public PrintText(String s) {
textToPrint = s;
}
}

//initialisation
public void init() {
setBackground(Color.white);
test = new Button("Test");
add(test);
test.addActionListener(this);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}

//event
public void actionPerformed(ActionEvent e) {

if (e.getSource() == test) {
//textToPrint= stars;
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = pj.defaultPage();
Paper paper = pf.getPaper();
double ph = paper.getHeight();
double pw = paper.getWidth();
int x = 36;
int y = 36;
paper.setImageableArea( (double) x, (double) y, pw - 2 * (double) x,
ph - 2 * (double) y);

pf.setPaper(paper);
PrintTest.PrintText psb = new PrintTest.PrintText(stars);
Book book = new Book();
book.append(psb,pf); // print stars
pj.setPageable(book);
printString(pj);
}
}

//print
public int print(Graphics g, PageFormat format, int pageIndex) {

if (pageIndex >= 1)
return Printable.NO_SUCH_PAGE;
int ix = (int) format.getImageableX();
int iy = (int) format.getImageableY();

FontMetrics fM = g.getFontMetrics();
int ascent = (int) fM.getAscent();

if (pageIndex < 1) {
g.setColor(Color.black);
g.drawString(this.textToPrint, ix, iy + ascent);
}

return Printable.PAGE_EXISTS;
}

private static void printString(PrinterJob printerJob) {
/*
Get initialized PrinterJob
*/
if (printerJob.printDialog()) {
String printerName = getPrinterName(getPrinterInfo(printerJob));
try {
printerJob.print();
}
catch (PrinterException pe) {
}
}
}

private static String getPrinterInfo(PrinterJob pj) {

PrintService printer = pj.getPrintService(); // get printer
PageFormat pageFormat = pj.defaultPage();
Paper paper = pageFormat.getPaper();
return printer.toString(); // get printername
}

private static String getPrinterName(String s) {
StringTokenizer sTok = new StringTokenizer(s, ":");
String printerName = s;
if (sTok.countTokens() > 1) {
while (sTok.hasMoreTokens()) {
printerName = sTok.nextToken();
}
}
return printerName;
}
}
0
neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004
29 mars 2004 à 14:03
J'ai regarder, je ne vois pas ou peut être l'erreur mais je suis assez nul sur le principe de class internet, je ne sais po trop ou la fermé. Voici le code, si quelqu'un voit les erreurs que j'ai fait sa serai cool.

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import java.awt.print.*;
import javax.print.PrintService;
import java.util.StringTokenizer;

public class PrintTest extends Applet implements ActionListener,Printable {
private boolean isStandalone = false;
final static String stars= "****";
private String textToPrint= stars;
Button test;

//applet constructor
public PrintTest() {
}

//get parameter
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

//intitialisation component
private void jbInit() throws Exception {
}

//get information applet
public String getAppletInfo() {
return "Print Test";
}

//get information parameter
public String[][] getParameterInfo() {
return null;
}

//intern class
public class PrintText {
public PrintText(String s) {
textToPrint = s;
}
}

//initialisation
public void init() {
setBackground(Color.white);
test = new Button("Test");
add(test);
test.addActionListener(this);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}

//event
public void actionPerformed(ActionEvent e) {

if (e.getSource() == test) {
//textToPrint= stars;
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = pj.defaultPage();
Paper paper = pf.getPaper();
double ph = paper.getHeight();
double pw = paper.getWidth();
int x = 36;
int y = 36;
paper.setImageableArea( (double) x, (double) y, pw - 2 * (double) x,
ph - 2 * (double) y);

pf.setPaper(paper);
PrintTest.PrintText psb = new PrintTest.PrintText(stars);
Book book = new Book();
book.append(psb,pf); // print stars
pj.setPageable(book);
printString(pj);
}
}

//print
public int print(Graphics g, PageFormat format, int pageIndex) {

if (pageIndex >= 1)
return Printable.NO_SUCH_PAGE;
int ix = (int) format.getImageableX();
int iy = (int) format.getImageableY();

FontMetrics fM = g.getFontMetrics();
int ascent = (int) fM.getAscent();

if (pageIndex < 1) {
g.setColor(Color.black);
g.drawString(this.textToPrint, ix, iy + ascent);
}

return Printable.PAGE_EXISTS;
}

private static void printString(PrinterJob printerJob) {
/*
Get initialized PrinterJob
*/
if (printerJob.printDialog()) {
String printerName = getPrinterName(getPrinterInfo(printerJob));
try {
printerJob.print();
}
catch (PrinterException pe) {
}
}
}

private static String getPrinterInfo(PrinterJob pj) {

PrintService printer = pj.getPrintService(); // get printer
PageFormat pageFormat = pj.defaultPage();
Paper paper = pageFormat.getPaper();
return printer.toString(); // get printername
}

private static String getPrinterName(String s) {
StringTokenizer sTok = new StringTokenizer(s, ":");
String printerName = s;
if (sTok.countTokens() > 1) {
while (sTok.hasMoreTokens()) {
printerName = sTok.nextToken();
}
}
return printerName;
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
29 mars 2004 à 22:15
J'ai pas bien compris l'intérêt de l'inner class vu qu'elle ne fait rien.
Sinon ton pb c'est que cette inner class n'implémente pas Printable.
0
neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004
30 mars 2004 à 09:08
J'utilise une class interne pour le book.append(psb,pf); car le premier paramétre psb doit être un objet printable, j'ai essayé comme directement en travaillant sur la class PrintTest
public PrintTest(String s) {
textToPrint = s;
}
à la compil il ne me mets pas d'erreur mais quand j'essay de charger l'applet dans une page web j'ai cette erreur
charger : PrintTest.java ne peut pas être instancié.
Sinon j'ai essayer comme ceci sur la class inner
public class PrintText implements Printable{
public PrintText(String s) {
textToPrint = s;
} mais à la compile j'ai cette erreur

PrintTest.PrintText should be declared abstract; it does not define print

Si quelqu'un pouvais m'aider ca serai cool
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
30 mars 2004 à 09:26
normal il faut implémenter la méthode
public int print(Graphics g, PageFormat format, int pageIndex)
0
neo1260 Messages postés 32 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 6 décembre 2004
30 mars 2004 à 09:29
J'ai impléter la methode public int print

public int print(Graphics g, PageFormat format, int pageIndex) {

if (pageIndex >= 1)
return Printable.NO_SUCH_PAGE;
int ix = (int) format.getImageableX();
int iy = (int) format.getImageableY();

FontMetrics fM = g.getFontMetrics();
int ascent = (int) fM.getAscent();

if (pageIndex < 1) {
g.setColor(Color.black);
g.drawString(textToPrint, ix, iy + ascent);
}

return Printable.PAGE_EXISTS;
}
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
30 mars 2004 à 09:31
oui mais dans l'inner class si elle implémente Printable.
0
Rejoignez-nous