gpt4 book ai didi

java - 如何在JTextArea字段中显示计算区域?就像一张包含税款、总额和零钱的收据

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:54 25 4
gpt4 key购买 nike

    public menu() {
super ("Welcome to my Cake Shop");

Box box = Box.createHorizontalBox();

container = getContentPane ();
container.setLayout (new FlowLayout());

cakeList = new JList (cakeNames);
cakeList.setVisibleRowCount(10);
;
cakeList.setFixedCellHeight( 15 );
cakeList.setSelectionMode (ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
container.add( new JScrollPane( cakeList ) );

selection = new JButton ("Selection Completed");
selection.addActionListener(
new ActionListener() {
public void actionPerformed (ActionEvent event) copyList.setListData(
cakeList.getSelectedValues());


}
}
);

container.add ( selection );
copyList = new JList ();
copyList.setVisibleRowCount( 10 );

copyList.setFixedCellHeight( 15 );
copyList.setSelectionMode (ListSelectionModel.SINGLE_INTERVAL_SELECTION );
container.add( new JScrollPane( copyList ));


setSize (280,500);
setVisible(true);
}

我不知道如何在 JTextarea 中显示所选项目的计算区域.. 就像另一侧显示的收据,其中包含税费、总额和零钱..

最佳答案

enter image description here

public class TestReceipts {

public static void main(String[] args) {
new TestReceipts();
}

public TestReceipts() {

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {

try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}

JFrame frame = new JFrame("Bill me");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setLayout(new BorderLayout());
frame.add(new ReceiptPane());
frame.setVisible(true);

}
});

}

protected class ReceiptPane extends JPanel {

private JTextArea textArea;

public ReceiptPane() {

setLayout(new BorderLayout());
textArea = new JTextArea();
textArea.setEditable(false);
add(new JScrollPane(textArea));

List<Item> lstItems = new ArrayList<Item>(25);
lstItems.add(new Item("Cakes", 1.5d, 5));
lstItems.add(new Item("Cakes with cream", 2d, 5));
lstItems.add(new Item("Cakes with chocolate", 2d, 5));
lstItems.add(new Item("Cakes with chocolate & cream", 2.5d, 5));
lstItems.add(new Item("Diet Coke (Can)", 2.5d, 5));

generateReceipt(lstItems, 100d);

}

protected void generateReceipt(List<Item> lstItems, double amountTendered) {

List<List<String>> lstRows = new ArrayList<List<String>>(25);

int totalQty = 0;
double subTotal = 0;

NumberFormat nf = NumberFormat.getCurrencyInstance();

for (Item item : lstItems) {
String unit = nf.format(item.getUnitCost());
String total = nf.format(item.getUnitCost() * item.getQty());

lstRows.add(createRow(
Integer.toString(item.getQty()),
item.getDescription(),
unit,
total));

subTotal += item.getUnitCost() * item.getQty();
}

int maxWidth = 60;
int qtyWidth = 4;
int unitWidth = 8;
int totalWidth = 8;
int descWidth = maxWidth - qtyWidth - unitWidth - totalWidth;

StringBuilder sbHeader = new StringBuilder(maxWidth);
sbHeader.append("Qty ");
sbHeader.append(fillWith("Item", " ", descWidth));
sbHeader.append(padWith("Cost", " ", unitWidth));
sbHeader.append(padWith(" Total", " ", totalWidth));

textArea.append(sbHeader.toString() + "\n");

System.out.println(sbHeader.toString());

for (List<String> row : lstRows) {
StringBuilder sb = new StringBuilder(maxWidth);

sb.append(padWith(row.get(0), " ", 3));
sb.append(" ");
String desc = row.get(1);
if (desc.length() > descWidth) {

desc = desc.substring(0, descWidth);

}
sb.append(fillWith(desc, ".", descWidth));
sb.append(padWith(row.get(2), " ", unitWidth));
sb.append(padWith(row.get(3), " ", totalWidth));

textArea.append(sb.toString() + "\n");
}

textArea.append(padWith("Sub-total " + padWith(nf.format(subTotal), " ", totalWidth), " ", maxWidth) + "\n");

double tax = subTotal * 0.1d;
textArea.append(padWith("Tax " + padWith(nf.format(tax), " ", totalWidth), " ", maxWidth) + "\n");

double total = tax + subTotal;
textArea.append(padWith("Total " + padWith(nf.format(total), " ", totalWidth), " ", maxWidth) + "\n");

textArea.append(padWith("Total " + padWith(nf.format(amountTendered), " ", totalWidth), " ", maxWidth) + "\n");

double change = amountTendered - total;
textArea.append(padWith("Change " + padWith(nf.format(change), " ", totalWidth), " ", maxWidth) + "\n");

}

protected List<String> createRow(String... columns) {
return Arrays.asList(columns);
}
}

public static String fillWith(String sValue, int width) {
StringBuilder sb = new StringBuilder(width);
for (int index = 0; index < width; index++) {
sb.append(sValue);
}
return sb.toString();

}

public static String fillWith(String sValue, String fill, int width) {
return sValue + fillWith(fill, width - sValue.length());
}

public static String pad(int iValue, int iMinLength) {
return pad(Integer.toString(iValue), iMinLength);
}

public static String pad(String sValue, int iMinLength) {
return padWith(sValue, "0", iMinLength);
}

public static String padWith(String value, String padding, int iMinLength) {
StringBuilder sb = new StringBuilder(iMinLength);
sb.append(value);

while (sb.length() < iMinLength) {
sb.insert(0, padding);
}

return sb.toString();
}

protected class Item {

private String description;
private double unitCost;
private int qty;

public Item(String description, double unitCost, int qty) {
this.description = description;
this.unitCost = unitCost;
this.qty = qty;
}

public String getDescription() {
return description;
}

public double getUnitCost() {
return unitCost;
}

public int getQty() {
return qty;
}
}
}

关于java - 如何在JTextArea字段中显示计算区域?就像一张包含税款、总额和零钱的收据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12558212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com