新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度

新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度,第1张

import javaxprintDoc;

import javaxprintDocFlavor;

import javaxprintDocPrintJob;

import javaxprintPrintService;

import javaxprintPrintServiceLookup;

import javaxprintServiceUI;

import javaxprintSimpleDoc;

import javaxprintattributeDocAttributeSet;

import javaxprintattributeHashDocAttributeSet;

import javaxprintattributeHashPrintRequestAttributeSet;

import javaxprintattributePrintRequestAttributeSet;

import javaxswingJFileChooser;

import javaawtFrame;

import javaioFile;

import javaioFileInputStream;

import javautil;

public class PrinterTest {

public static void main(String args[]){

JFileChooser fileChooser = new JFileChooser();

int state = fileChoosershowOpenDialog(null);

if(state == fileChooserAPPROVE_OPTION){

File file = fileChoosergetSelectedFile(); //获取选择的文件

//构建打印请求属性集

PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

//设置打印格式,因为未确定文件类型,这里选择AUTOSENSE

DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE;

//查找所有的可用打印服务

PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras);

//定位默认的打印服务

PrintService defaultService = PrintServiceLookuplookupDefaultPrintService();

//显示打印对话框

PrintService service = ServiceUIprintDialog(null, 200, 200, printService,

defaultService, flavor, pras);

if (service != null){

try {

DocPrintJob job = servicecreatePrintJob(); //创建打印作业

FileInputStream fis = new FileInputStream(file); //构造待打印的文件流

DocAttributeSet das = new HashDocAttributeSet();

Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式

jobprint(doc, pras);

}catch(Exception e){

eprintStackTrace();

}

}

}

}

楼上的也真是的,将javadoc中的代码粘贴过来就混弄人家啊?

import javaxprintDocFlavor;

import javaxprintattributeHashPrintRequestAttributeSet;

import javaxprintPrintService;

import javaxprintPrintServiceLookup;

import javaxprintattributePrintRequestAttributeSet;

PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

DocFlavor flavor = DocFlavorBYTE_ARRAYPNG;

PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras);

package comibacxxadmcontroller;import javaxprint;import javaxprintattributeDocAttributeSet;import javaxprintattributeHashDocAttributeSet;import javaxprintattributeHashPrintRequestAttributeSet;import javaxswing;import javaioFile;import javaioFileInputStream;/ Created by Administrator on 2017/9/8 0008 /public class TestController { public static void main(String[] args) {

JFileChooser fileChooser = new JFileChooser(); //创建打印作业 int state = fileChoosershowOpenDialog(null); if(state == fileChooserAPPROVE_OPTION){ // File file = new File("D:/hahatxt"); //获取选择的文件 File file = fileChoosergetSelectedFile();//获取选择的文件 //构建打印请求属性集 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); //设置打印格式,因为未确定类型,所以选择autosense DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE; //查找所有的可用的打印服务 PrintService printService[] = PrintServiceLookuplookupPrintServices(flavor, pras); //定位默认的打印服务 PrintService defaultService = PrintServiceLookuplookupDefaultPrintService(); //显示打印对话框 PrintService service = ServiceUIprintDialog(null, 200, 200, printService,

defaultService, flavor, pras); if(service != null){ try {

DocPrintJob job = servicecreatePrintJob(); //创建打印作业 FileInputStream fis = new FileInputStream(file); //构造待打印的文件流 DocAttributeSet das = new HashDocAttributeSet();

Doc doc = new SimpleDoc(fis, flavor, das);

jobprint(doc, pras);

} catch (Exception e) {

eprintStackTrace();

}

}

}

}

}

有时候我们需要判断scrollview滑动到了哪一个位置。下面这部分代码完整的说明了如何判断scrollvew滑动到哪一个位置:

[mw_shl_code=java,true]public

class MyScrollView extends ScrollView {

public MyScrollView(Context

context, AttributeSet attrs) {

super(context,

attrs);

handler = new Handler() {

public void handleMessage(Message msg) {

if (msgwhat == 1) {

/这样做为什么可以成功?

认真思考它。如果思考明白了,尤其是getMeasuredHeight()与getHeight方法有什么区别,那么整个View的绘制过程可以说你就十分清晰。如果确实不明白,留言吧!我会比较详细的说明的。

/

if

(viewgetMeasuredHeight() <= getScrollY() + getHeight()

&& getScrollY() != 0) {

onScrollListeneronButtom();

} else if (getScrollY() == 0) {

onScrollListeneronTop();

} else

onScrollListeneronScroll();

}

}

};

//

对事件的处理一定是对view刻画完毕之后才开始的,所以,getHeight是有值的

setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent

event) {

view = getChildAt(0);

if (MotionEventACTION_UP == eventgetAction()) {

handlersendEmptyMessage(1);

}

//return false与return

true 是有区别的,如果返回false,scrollview是不是有滑动的。百度一下这两个有什么区别就知道为什么要这么做了

return false;

}

});

}

public MyScrollView(Context context,

AttributeSet attrs, int defStyle) {

super(context, attrs,

defStyle);

// TODO Auto-generated constructor stub

}

private OnScrollListener onScrollListener;

private

Handler handler;

private View view;

public void

setOnScrollListener(OnScrollListener onScrollListener) {

thisonScrollListener = onScrollListener;

}

}

/

这个小demo只是为了展示如何判断用户滑动到了scrollview的位置。还有很多优化性能的方法,比如新开线程和将一些代码放在新的方法中,在Activity里面调用它!

/[/mw_shl_code]

XML文件布局如下:[mw_shl_code=java,true]<xml version="10"

encoding="utf-8">

<orgchongshitestMyScrollView

xmlns:android=">

第一种,使用SAXReader

[java] view plain copy

InputStream in = DBHelpergetDBHelper()getContext()getResources()

getAssets()open("provincexml");

InputStream is = IOHelperfromInputStreamToInputStreamInCharset(in,"utf-8");

SAXReader sr = new SAXReader();// 获取读取xml的对象。

Document document = srread(is);

Element root = documentgetRootElement();

当然,使用这种方法还是比较麻烦的,因为需要引入dom4j的jar包。

第二种,直接使用XmlPullParser

我们查看XmlResourceParser源码的时候,就会发现XmlResourceParser实现了两个接口,AttributeSet和XmlPullParser,而实际上XmlPullParser就是帮助我们去读xml文件的。

当然还是需要获得inputstream流,但是优势就是不用引入jar包而已。

[java] view plain copy

public void test(InputStream in) {

XmlPullParserFactory factory;

try {

factory = XmlPullParserFactorynewInstance();

factorysetNamespaceAware(true);

XmlPullParser xpp = factorynewPullParser();

xppsetInput(in, "UTF-8");

int evtType = xppgetEventType();

// 一直循环,直到文档结束

while (evtType != XmlPullParserEND_DOCUMENT) {

switch (evtType) {

case XmlPullParserSTART_TAG:

String tag = xppgetName();

Systemoutprintln(tag);

break;

case XmlPullParserEND_TAG:

break;

default:

break;

}

//获得下一个节点的信息

evtType = xppnext();

}

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

java可以使用javax提供的print工具类,访问到系统的打印机基本信息,示例如下:

import javaioFile;

import javaioFileInputStream;

import javaxprintDoc;

import javaxprintDocFlavor;

import javaxprintDocPrintJob;

import javaxprintPrintService;

import javaxprintPrintServiceLookup;

import javaxprintServiceUI;

import javaxprintSimpleDoc;

import javaxprintattributeDocAttributeSet;

import javaxprintattributeHashDocAttributeSet;

import javaxprintattributeHashPrintRequestAttributeSet;

import javaxswingJFileChooser;

public class Printers

{

public static void main(String[] args)

{

HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

DocFlavor flavor = DocFlavorINPUT_STREAMAUTOSENSE;

//查找所有的可用的打印服务

PrintService[] printService = PrintServiceLookuplookupPrintServices(flavor, pras);

for (int i =0; i<printServicelength ;i++ )

{

Systemoutprintln(printService[i]getName());

}

}

}

以上就是关于新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度全部的内容,包括:新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度、java 如何获取可用的打印机列表、java如何调用打印机打印图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9339847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存