Ich versuche, die gesamte Ausgabe in einen JOption-Bereich über 3 verschiedene Klassen hinweg zu setzen. Im Moment, wann immer ich die Ebooks drucke, werden sie in ihren eigenen individuellen Dialogfeldern gedruckt, wobei sie einzeln auf OK drücken müssen, um durch alle Bücher zu blättern.Drucken in einem JOption-Bereich über mehrere Klassen hinweg
Ich brauche sie in einem Dialogfeld enthalten, zusammen mit den "Programmed By" und Ebook Count/Cost Abschnitt.
Und ich bin neugierig, ob ich über jede der Klassen importieren muss. Vielen Dank.
import javax.swing.JOptionPane; // dialog box
public class Ebook
{
private String author = "";
private String title = "";
private double price = 0.0;
private String isbn = "";
public Ebook(String author, String title, double price, String isbn) // ebook constructor
{
this.author = author;
this.title = title;
if (price > 0) // validate non-negative price
this.price = price;
else
{
this.price = 0.0;
System.out.println("Invalid price");
}
if (isbn.length() == 10 || isbn.length() == 13) // isbn length must be exactly 10 or 13
this.isbn = isbn;
else
this.isbn = "None";
}
public void setPrice(double price)
{
if (price < 0) // validate
{
System.out.println("Invalid price");
}
else
this.price = price;
}
public double getPrice()
{
return price;
}
public void setAuthor(String theAuthor)
{
this.author = theAuthor;
}
public String getAuthor()
{
return author;
}
public void setIsbn(String isbn)
{
if (isbn.length() == 10 || isbn.length() == 13) // validate
{
this.isbn = isbn;
}
else
isbn = "None";
}
public String getIsbn()
{
return isbn;
}
public void setTitle(String title)
{
this.title = title;
}
public String getTitle()
{
return title;
}
public String toString()
{
return String.format("Author: %s%nTitle: %s%nPrice: $%.1f%nISBN: %s%n",
author,title,price,isbn);
}
} // This was made by --
import javax.swing.JOptionPane; // dialog box
public class EbookLibrary
{
private int count = 0;
private double total_cost = 0.0;
Ebook[] ebooks = new Ebook[25]; // array of ebook objects
public EbookLibrary() // no argument constructor for ebooklibrary object in library test
{
}
public int getCount() // total number of ebooks
{
return count;
}
public double getCost() // sum of all ebooks
{
return total_cost;
}
public String toString() // formatted string with the number and cost of all ebooks
{
String message2 = String.format("Ebook count: %d%nTotal Cost: $%.1f", count, total_cost); // for dialog box
return message2;
}
public void addEbook(String author, String title, double price, String isbn) // adds ebooks to the array
{
if (count < 25) // dont walk off array
{
Ebook anEbook = new Ebook(author,title,price,isbn); // ebook object to be created when addEbook is called
ebooks[count] = anEbook;
total_cost += price; // total of all the books
String message = String.format("%s%n", ebooks[count]);
JOptionPane.showMessageDialog(null,message); // display books in dialog boxes
count++; // increment count each time
}
}
} // This was made by ------
import javax.swing.JOptionPane; // dialog box
public class EbookLibraryTest
{
public static void main(String[] args)
{
EbookLibrary aLibrary = new EbookLibrary(); // EbookLibrary object for calling addEbook
// ebook objects
aLibrary.addEbook("Blah", "What", 88.8, "1234567891")
aLibrary.addEbook("Thing Do", "What What", 45.0, "1234567891111");
aLibrary.addEbook("Stephen King","The Thing",1.1, "1234567891");
aLibrary.addEbook("Robert","A Title", -1.0, "1234567891"); // test invalid price, should return 0.0 and "invalid price"
aLibrary.addEbook("Tom","Bad Title", 33.1, "1234567891111");
aLibrary.addEbook("Bob", "FML and Other Acronyms", 25.0, "1"); // test ISBN value, should return "None"
aLibrary.getCount();
aLibrary.getCost();
String message = "Programmed by ---- ";
String message2 = String.format("%s%n", aLibrary.toString());
JOptionPane.showMessageDialog(null,message + "\n " + message2);
}
}