Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich bräuchte mal wieder hilfe,
mein problem ist folgendes ....
Mein Programm erstellt nach erfolgreicher Benutzereingabe eine textdatei mit den eingaben, nun moechte ich dem user auch die moeglichkeit geben sich diese daten ausdrucken zu lassen.
Ich habe schon in der API und anderen quellen geschaut aber das hat mich auch nicht wirklich weitergebracht(leider)........
Währe schoen wenn mir einer ein möglichst einfaches beispielscript liefern koennte....
danke fuer die url´s, da hab ich auch schon geschaut, Problem ist folgendes, ich arbeite nicht mit einer grafischen bedien oberflaeche(AWT/SWING) sondern will den druckbefehl aus der dos eingabekonsole heraus ausfuehren (wenn das ueberhaupt moeglich ist).
Meine Idee währe die daten in einen Stream einzulesen und diesen dann an den drucker zu uebergeben , nur das ich nicht die kleinste idee habe wie ich das machen soll.
als verdeutlichung hier mal mein script, es ermoeglicht die eingabe von schueler vor,-und nachnamen, die eingabe der Tel. nr. sowie das speichern der eingegebenen Daten.
Code:
import java.io.*;
import java.awt.*;
import java.awt.print.*;
public class Array3
{
public static void main(String args[]) throws IOException
{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int c = 1;
int eingabe=0;
String eing;
System.out.println("Wieviele Adressen möchten sie aufnehmen?");
try
{
eingabe = Integer.parseInt(input.readLine());
}
catch (NumberFormatException nfe){ System.out.println("not valid");
return;
}
String[] datenfeld = new String[eingabe];
String[] name = new String[datenfeld.length];//arrays mit der laenge des ersten array initialisieren
String[] vorname = new String[datenfeld.length];
int[] telefon = new int[datenfeld.length];
for(int i=0; i < eingabe; i++)
{
// eingabe durch den Benutzer
System.out.println("Bitte geben sie den namen für die "+ (i+1) +". Person ein:");
name[i] = input.readLine();
System.out.println("Bitte geben sie den Vornamen für die "+ (i+1) +". Person ein:");
vorname[i] = input.readLine();
System.out.println("Bitte geben sie die Telefonnummer für die "+ (i+1) +". Person ein:");
telefon[i] = Integer.parseInt(input.readLine());
}
System.out.println("Vielen Dank für ihre Eingabe. Moechten sie die Adressen nun anzeigen? (J)a / (N)ein oder(S)peichern ?");
for(int z=1; z>0;)
{
eing = input.readLine();
if (eing.equals("j")) // ausgabe
{
System.out.println("______A D R E S S E N A N Z E I G E N______");
for(int i=0; i < eingabe; i++)
{
System.out.println("Name:"+name[i]+"\t Vorname:"+vorname[i]+"\t Telefonnummer:"+telefon[i]); }
return;
}
else if (eing.equals("n"))// keine ausgabe der daten
{
System.out.println("Adressen Nicht Anzeigen");
return;
}
else if (eing.equals("s"))//datei speichern unter dem angegebenen Pfad
{
File datei=new File("H:Tex.txt");
FileWriter ausgabestrom = new FileWriter(datei);
PrintWriter ausgabe=new PrintWriter(ausgabestrom);
for(int i=0; i < eingabe; i++)
ausgabe.println("Name:"+name[i]+"\t Vorname:"+vorname[i]+"\t Telefonnummer:"+telefon[i]);
ausgabe.close();
System.out.println("die datei wurde unter H:Tex.txt abgespeichert.");
return;
}
else if (eing.equals("d"))// keine ausgabe der daten
{
System.out.println("Adressen Nicht Anzeigen");
return;
}
else System.out.println("Das war keine gueltige Eingabe. Bitte wiederhohlen (J)a, (N)ein oder (S)peichern ");
}
}
}
wenn einer ne Idee hat , immer her damit !!!!!
MFG
ach das alte adress projekt. wird mittlerweile glaub fast überall als aufgabe mehr oder minder komplex gestellt.
das zeichnen funktioniert grob so:
zu zeichnest die strings in eine grafik rein und druckst diese grafik.
hier mal die code schnipsel die das ganze ermöglichen sollten (wenns nicht geht melde dich nochmal). pass das ganze noch an deine struktur an und es sollte gehen.
Code:
import java.awt.print.*;
import java.awt.Graphics;
public class blubb implements Printable{
public void Drucken(){
PrinterJob pJob = PrinterJob.getPrinterJob();
PageFormat defaultPF = pJob.defaultPage();
PageFormat pFormat = pJob.pageDialog(defaultPF);
if( pFormat != defaultPF){
if(pJob.printDialog()){
try{
pJob.setPrintable(this, pFormat);
pJob.print();
}
catch (PrinterException e){
System.out.println("Fehler beim Drucken");
}
}
else {
System.out.println("Druck-Dialog abgebrochen");
}
}
else {
System.out.println("Format-Dialog abgebrochen");
}
}
public int print(Graphics g, PageFormat pForm, int pageNo) throws PrinterException{
int ret = PAGE_EXISTS;
if(pageNo > 0){
ret = NO_SUCH_PAGE;
}
int z=0;
int xPos = ((int)pForm.getImageableX()+2);
int yPos = ((int)pForm.getImageableY()+40);
int yd = 12;
String line = null;
while (z<=maxUser){
ad=(Addresse)(v.elementAt(z));
line = ("Name:"+name[i]+"\t Vorname:"+vorname[i]+"\t Telefonnummer:"+telefon[i]);
g.drawString(line, xPos, yPos);
yPos += yd;
z++;
}
return ret;
}
hierbei kann NUR 1ne(!!) seite gedruckt werden. teste mal ob es geht, den ich habs aus meinen projekt rausgenommen und nur geringfügig geändert (meine version war mit gui, einer messagebox, mehreren klassen und einem eigenem element für die daten (speicherung mittels vercotr für unbegrenzt viele einträge))