gpt4 book ai didi

java - 找不到符号 - 变量 mText

转载 作者:行者123 更新时间:2023-12-02 07:22:43 29 4
gpt4 key购买 nike

嘿,我一直在编写一些代码,它允许用户选择一个文件,一个txt文件,然后读取文件的内容,然后将内容发送到打印机,本例是hp 8600,但是在编译时我收到错误,找不到符号 - 变量 mText,这是为什么,它应该从上面检索 mText,因为现在应该包含 txt 文件中的所有数据,我做错了什么?

代码:

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.text.*;
import java.io.*;
import javax.swing.*;

public class PrintText implements Printable {


// Below the code will allow the user to select a file and then print out the contents of the file
public static void main(String[] args) throws IOException {

//selects the file
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File file = chooser.getSelectedFile();
String filename = file.getName();
//System.out.println("You have selected: " + filename); testing to see if file seleected was right
String path = file.getAbsolutePath();

//Reads contents of file into terminal
//FileReader fr = new FileReader("filename");
// FileReader fr = new FileReader("D:/Documents/" + "filename"));

FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String mText;
while((mText = br.readLine()) != null) {
//Displays the contents of the file in terminal
System.out.println(mText);
}
//fr.close();
}


//private static final String mText =
// "This is a test to see if this text will be printed "; //This works perfectly fine

private static final AttributedString mStyledText = new AttributedString(mText);



/**
* Print a single page containing some sample text.
*/
static public void printer(String args[]) {
/* Get the representation of the current printer and
* the current print job.
*/
PrinterJob printerJob = PrinterJob.getPrinterJob();
/* Build a book containing pairs of page painters (Printables)
* and PageFormats. This example has a single page containing
* text.
*/
Book book = new Book();
book.append(new PrintText(), new PageFormat());
/* Set the object to be printed (the Book) into the PrinterJob.
* Doing this before bringing up the print dialog allows the
* print dialog to correctly display the page range to be printed
* and to dissallow any print settings not appropriate for the
* pages to be printed.
*/
printerJob.setPageable(book);
/* Show the print dialog to the user. This is an optional step
* and need not be done if the application wants to perform
* 'quiet' printing. If the user cancels the print dialog then false
* is returned. If true is returned we go ahead and print.
*/
boolean doPrint = printerJob.printDialog();
if (doPrint) {
try {
printerJob.print();
} catch (PrinterException exception) {
System.err.println("Printing error: " + exception);
}
}
}

/**
* Print a page of text.
*/
public int print(Graphics g, PageFormat format, int pageIndex) {
/* We'll assume that Jav2D is available.
*/
Graphics2D g2d = (Graphics2D) g;
/* Move the origin from the corner of the Paper to the corner
* of the imageable area.
*/
g2d.translate(format.getImageableX(), format.getImageableY());
/* Set the text color.
*/
g2d.setPaint(Color.black);
/* Use a LineBreakMeasurer instance to break our text into
* lines that fit the imageable area of the page.
*/
Point2D.Float pen = new Point2D.Float();
AttributedCharacterIterator charIterator = mStyledText.getIterator();
LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator, g2d.getFontRenderContext());
float wrappingWidth = (float) format.getImageableWidth();
while (measurer.getPosition() < charIterator.getEndIndex()) {
TextLayout layout = measurer.nextLayout(wrappingWidth);
pen.y += layout.getAscent();
float dx = layout.isLeftToRight()? 0 : (wrappingWidth - layout.getAdvance());
layout.draw(g2d, pen.x + dx, pen.y);
pen.y += layout.getDescent() + layout.getLeading();
}
return Printable.PAGE_EXISTS;
}
}

最佳答案

目前,mText 仅在 main 方法的范围内定义。如果您希望在 mStyledText 的构造函数中使用它,则需要将 mText 设为 static 类变量:

private static String mText;

拥有非final static类变量被认为是不好的做法,但是为什么不在print中创建AttributedString code> 方法只在需要时使用:

AttributedString mStyledText = new AttributedString(mText);

此外,main 方法中还有很多功能。我会将其移至类实例方法,您可以在其中完全避免使用任何静态变量。

关于java - 找不到符号 - 变量 mText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006348/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com