2013-04-11 51 views
0

我有一個實現Printable的類。我試圖以某種方式從文本字段獲取值到打印方法,但似乎無法解決如何做到這一點。將參數傳遞給已實現的方法java

public class TreePrint extends javax.swing.JFrame implements Printable{ 

然後,這是當用戶已經選擇了要打印的項目的動作:

private void btnPrintActionPerformed(java.awt.event.ActionEvent evt)           
{ 
    goPrint(); 
} 

public void goPrint() 
{ 
    PrinterJob job = PrinterJob.getPrinterJob(); 
    job.setPrintable(new TreePrint()); 
    // boolean doPrint = job.printDialog(); 
    job.print(); 
} 

@Override 
public int print(Graphics g, PageFormat pf, int page) throws PrinterException { 
    Koks koksSelected = (Koks) combobox_skirne.getSelectedItem(); 
    System.out.println(combobox_skirne.getSelectedItem()); 
    if (page > 0) { 
     return NO_SUCH_PAGE; 
    } 
    System.out.println(koksSelected.getSkirne());  
    return PAGE_EXISTS; 
} 

的問題是,我不能在打印方法所選擇的項目或文本值。我可以將它們放在go print或btnPrintActionPerformed中,但是在print()中它會始終顯示程序第一次運行時所選的值。 如果需要,我可以發佈更多代碼,但時間很長。我確定這是一個實施方法的基本問題,但我找不到答案。

這是一個類似的問題(同): Passing Parameters to the print method (JAVA)

回答

3

如果當您創建TreePrint對象,添加一個新的構造與這個領域的參數可用。如果沒有,請在TreePrint中使用公共方法打印之前設置參數。例如:

private TreePrint tp; 

public void goPrint() 
{ 
    ... 
    this.tp = new TreePrint(); 
    job.setPrintable(this.tp); 
    ... 
} 

@Override 
public int print(Graphics g, PageFormat pf, int page) throws PrinterException { 
    ... 
    this.tp.setXYZParameters(para1, para2, paraN); 
    ... 
} 

TreePrint例如:

private Integer para1; 
private Integer para2; 
private Integer paraN; 

public void setXYZParameters(...) {...} 
+0

沒能得到它的工作方式,但使它與全局變量的工作,所以它是所有好的:) – user1999648 2013-04-11 14:27:45

+0

[避免使用全局變量(http://c2.com/cgi/wiki?GlobalVariablesAreBad)。在這種情況下,我認爲不需要全局變量。如果你添加你的代碼,我會看看我是否可以替換全局變量:)。 – Eich 2013-04-11 14:35:07

+0

我在這裏發佈了代碼,在此先感謝:http://pastie.org/private/dtntiqs72tz5lrcnxtm8yw – user1999648 2013-04-11 14:54:00