TextArea resistant to change...
Hey guys!!
I'm trying to figure out what I've done wrong here. So I have the
piece of code at the end of this post and I'm trying to reset the text
everytime a button is clicked, but nothing happens. I am using
com.neva from this website:http://www.nevaobject.com/products.htm
(mainly JPrint, but you need Coroutine to make it work)
and it works fine with their sample code at the bottom of this page:
http://www.nevaobject.com/_docs/_jprint/JPrint.htm
So I must have a syntax or scope problem or something somewhere but I
can't figure it out. Can anyone please help me out?
Thanks,
JL
//Basically this dialog pops up when i click on a button generated by
another class, pWATCH.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.print.*;
import com.neva.*;
public class PrinterMonitor extends Dialog implements ActionListener {
final int height = 450;
final int width = 200;
private pWATCH parent;
private String[] printerNames;
private Panel textPanel;
private TextArea printerMessages;
private PrintService[] services =
PrintServiceLookup.lookupPrintServices(null, null);
public PrinterMonitor(pWATCH parent) {
super(parent, "Printer Monitor", true);
this.parent = parent;
addWindowListener(new CloseHandler(this));
if(services.length != 0){
Panel introPanel = new Panel();
introPanel.setLayout(new GridLayout(2,1));
introPanel.add(new Label("Please select the printer you will be
monitoring", Label.CENTER));
introPanel.add(new Label("Please verify that pageWATCH is attached
to the chosen printer", Label.CENTER));
Panel namesPanel = new Panel();
namesPanel.setLayout(new GridLayout(4, 4));
for (int i = 0; i < getButtons().length; i++){
getButtons()[i].addActionListener(this);
namesPanel.add(getButtons()[i]);
}
Panel cancelButtonP = new Panel();
cancelButtonP.setLayout(new GridLayout(4,4));
Button cancelButton = new Button("Cancel!");
cancelButton.addActionListener(this);
cancelButtonP.add(cancelButton);
Panel allButtons = new Panel();
allButtons.setLayout(new GridLayout(2,1));
allButtons.add(namesPanel);
allButtons.add(cancelButtonP);
add(allButtons, "Center");
textPanel = new Panel();
textPanel.setLayout(new GridLayout(1,1));
printerMessages = new TextArea();
printerMessages.setEditable(false);
textPanel.add(printerMessages);
add(textPanel, "South");
}
else{
Panel infoPanel = new Panel();
infoPanel.add (new Label("Sorry. There are no printers
connected to this machine.", Label.CENTER));
infoPanel.add(new Label("Please connect a printer and try
again.", Label.CENTER));
add(infoPanel, "Center");
}
int minScreenWidth = getWidth();
setSize(width + minScreenWidth, height);
setLocation(parent.getLocationOnScreen().x + 30,
parent.getLocationOnScreen().y + 30);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
for (int i = 0; i < getPrinterNames().length; i++){
if(cmd.equals(getPrinterNames()[i])){
String pname = getPrinterNames()[i];
JPrint jpr = new JPrint();
jpr.ReleasePrinter();
PrinterInfo info=JPrint.GetPrinterInfo(pname);
if(info!=null) {
String printername = "Printer Name: " + info.PrinterName();
String portname = "Port Name: " + info.PortName();
String comment = "Comment: " + info.Comment();
String numberofjobs = "Number of Jobs in Queue: " +
info.Jobs();
String averageppm = "AveragePPM" + info.AveragePPM();
printerMessages.setText("\n--- " + printername + " ---\n"
+ portname + "\n" + comment + "\n" + numberofjobs +
"\n" + averageppm + "\n");
}
}
}
}
}
public void colorUp(){
Color someSortOfBlue = new Color(51, 153, 153);
this.setBackground(someSortOfBlue);
}
public Button[] getButtons(){
Button[] printerButtons = new Button[services.length];
for (int i = 0; i < services.length; i++){
printerButtons[i] = new Button (services[i].getName());
}
return printerButtons;
}
public String[] getPrinterNames(){
printerNames = new String[services.length];
for (int i = 0; i <services.length; i++){
printerNames[i] = services[i].getName();
}
return printerNames;
}
public double myMax(double[] array){
double tracker1 = array[0];
double tracker2 = array[0];
double sizeOfArray = array.length ;
if (sizeOfArray == 0){
System.out.println("The array has no items!");
return 0;
}
for(int i = 1; i< sizeOfArray ; i++ ){
tracker1 = Math.max(tracker2, array[i]);
tracker2 = tracker1;
}
return tracker1;
}
public int getWidth(){
printerNames = getPrinterNames();
FontMetrics fm = getFontMetrics(getFont());
double[] printerNamesWidth = new double[printerNames.length];
for (int i = 0; i < printerNames.length; i++){
printerNamesWidth[i] =
fm.stringWidth(printerNames[i]);
}return (int) myMax(printerNamesWidth);
}
class CloseHandler extends WindowAdapter{
PrinterMonitor pm;
public CloseHandler(PrinterMonitor pm){
this.pm = pm;
}
public void windowClosing (WindowEvent e){
pm.removeWindowListener(this);
pm.dispose();
}
}
}