gpt4 book ai didi

java - 无法运行 string.format + 退出按钮问题

转载 作者:行者123 更新时间:2023-12-02 10:49:14 26 4
gpt4 key购买 nike

我正在开发我的第一个项目。当我尝试转到 string.format 中的新行时,它以某种方式失败了(根本不会打印或在同一行中打印)。

这是代码:

    String reciept = String.format("Recipt number #16424 +"  + "%n" + "Beef Burgers :" + ab1 +"%n" + "Cheese Burgers :" + ab2 + "%n" +   "Fish and Chips :" + ab3 + "%n"  + "French Fries :" + ab5 + "%n" +  "Steak :" + ab4 + "%n"  + "Sprite Drinks : " + ab + "%n" +  "Soda Drinks : " + ab8 + "%n" + "Fuzetea Drinks : " + ab7 + "%n" + "Coke Drinks :" + ab6 + "%n" , ab,ab1,ab2,ab3,ab4,ab5,ab6,ab7,ab8);
recieptText.setText(reciept);

还有 1 个问题。我正在尝试创建 JButton 导出。我试图打开一条消息,上面写着如果我确定要退出,那么就会退出,但我失败了,所以我尝试了 reg 一个,如果他按退出,它就会退出,我也失败了。

JButton btnExit = new JButton("Exit");
btnExit.setFont(new Font("Tahoma", Font.PLAIN, 19));
btnExit.setBounds(766, 484, 127, 39);
if (btnExit.isSelected()==true) {
System.exit(0);
}
frame.getContentPane().add(btnExit);

最佳答案

Snow,你正处于一段漫长但有趣且富有成果的旅程的开始。祝你好运!对于您的第一个问题,就面向对象设计原则而言,有许多不同完善程度的正确答案。我需要建议您尽早阅读有关 Java 编码标准、控制反转、单元测试的内容。我只提一下封装,并向您推荐以下解决方案。

我首先会创建两个类 Receipt 和 ReceiptItem (可以根据项目的范围创建 Product、ProductPrice 等),假设它不仅仅是您尝试打印的单个收据(并且可能用于存储收据以供以后使用)检查(您还需要一个持久层(这是您需要探索的另一个领域)),但您将处理许多具有更多收据详细信息行的收据。然后,我将创建这两个类的实例,并在将其发送到文本显示/打印设备之前调用 Receipt 类的 toFormattedString 方法。

public class ReceiptItem {
private static final int TITLE_WIDTH = 30;
private static final String DETAIL_FORMAT="%-" + TITLE_WIDTH + "s : %6s%n";

private String title;
private BigDecimal totalPrice;

public ReceiptItem(String title, BigDecimal totalPrice) {
setTitle(title);
setTotalPrice(totalPrice);
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public BigDecimal getTotalPrice() {
return totalPrice;
}

public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}

public String toFormattedString() {
return String.format(DETAIL_FORMAT, getTitle(),
getTotalPrice().toPlainString());
}
}


public class Receipt {
private static final String RECEIPT_HEADER_FORMAT = "Receipt number #%s%n";
private static int LAST_RECEIPT_NUMBER = 0;
private int receiptNumber;
private List<ReceiptItem> items= new ArrayList<>();

public Receipt() {
super();
setReceiptNumber(++LAST_RECEIPT_NUMBER);
}

public Receipt(int receiptNumber) {
this();
setReceiptNumber(LAST_RECEIPT_NUMBER=receiptNumber);
}

public void addItem(ReceiptItem item) {
items.add(item);
}

public int getReceiptNumber() {
return receiptNumber;
}
public void setReceiptNumber(int receiptNumber) {
this.receiptNumber = receiptNumber;
}
public List<ReceiptItem> getItems() {
return items;
}
public void setItems(List<ReceiptItem> items) {
this.items = items;
}
public String toFormattedString() {
StringBuilder builder = new StringBuilder();
builder.append(String.format(RECEIPT_HEADER_FORMAT, getReceiptNumber()));
for (ReceiptItem item:getItems()) {
builder.append(item.toFormattedString());
}
return builder.toString();
}
}


Receipt receipt = new Receipt();
receipt.addItem(new ReceiptItem("Beef Burgers", new BigDecimal("5.00")));
receipt.addItem(new ReceiptItem("Cheese Burgers", new BigDecimal("5.00")));
receipt.addItem(new ReceiptItem("Fish and Chips", new BigDecimal("6.00")));
receipt.addItem(new ReceiptItem("French Fries", new BigDecimal("4.00")));
receipt.addItem(new ReceiptItem("Steak", new BigDecimal("10.00")));
receipt.addItem(new ReceiptItem("Sprite Drinks", new BigDecimal("1.00")));
receipt.addItem(new ReceiptItem("Soda Drinks", new BigDecimal("0.40")));
receipt.addItem(new ReceiptItem("Fuzetea Drinks", new BigDecimal("0.70")));
recieptText.setText(reciept.toFormattedString());

我对你的第二个问题的回答:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//... Your code here
JButton btnExit = new JButton("Exit");
btnExit.setFont(new Font("Tahoma", Font.PLAIN, 19));
btnExit.setBounds(766, 484, 127, 39);
if (btnExit.isSelected()==true) {
System.exit(0);
}

btnExit.addActionListener((e)-> {
int confirm = JOptionPane.showOptionDialog(frame,
"Are You Sure to Close this Application?",
"Exit Confirmation", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, null, null);
if (confirm == JOptionPane.YES_OPTION) {
System.exit(0);
}
});

frame.getContentPane().add(btnExit);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int confirm = JOptionPane.showOptionDialog(frame,
"Are You Sure to Close this Application?",
"Exit Confirmation", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, null, null);
if (confirm == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
frame.setVisible(true);
frame.pack();

关于java - 无法运行 string.format + 退出按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52303513/

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