gpt4 book ai didi

java - 处理多个 Action 监听器

转载 作者:行者123 更新时间:2023-11-29 07:37:06 46 4
gpt4 key购买 nike

我无法为我的程序显示小计、税金和总计。我知道我需要一个 Action 监听器我只是在为不同的组合框和复选框实现多个监听器时遇到了问题

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.text.DecimalFormat;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

public class SB2_Designer extends JFrame {
private final int WINDOW_WIDTH = 400; // Window width
private final int WINDOW_HEIGHT = 500; // Window height

//Deck
private JLabel Dlabel;
private JComboBox Dbox;
//Prices for boards
public final double _Master = 60.00;
public final double _Dictat = 45.00;
public final double _Street = 50.00;

//Trucks
private JLabel Trlabel;
private JComboBox Trbox;
// Prices for Tucks
public final double _sevenSeven = 35.00;
public final double _eight = 40.00;
public final double _eightFive = 45.00;

//Wheels
private JLabel Wlabel;
private JComboBox Wbox;
// Prices for Wheels
public final double _fiveOne = 20.00;
public final double _fiveFive = 22.00;
public final double _fiveEight = 24.00;
public final double _sixOne = 24.00;

//Arrays for ComboBox
private String[] Decks = {"The Master Thrasher: $60",
"The Dictator: $45", "The Street King: $50"};
private String[] Trucks = {"7.75 inch axle: $35",
"8 inch axle: $40", "8.5 inch axle: $45"};
private String[] Wheels = {"51 mm: $20",
"55 mm: $22", "58 mm: $24",
"61 mm: $28"};

// accessories check box and label
private JLabel Atitle;
private JCheckBox GripBox;
private JCheckBox BearBox;
private JCheckBox RiseBox;
private JCheckBox BoltBox;
public final double _Grip = 10.00;
public final double _Bear = 30.00;
public final double _Rise = 2.00;
public final double _Bolt = 3.00;


// Subtotal and textfield
private JLabel StLabel;
private JTextField Stfield;
//Tax and text field
private JLabel TaxLabel;
private JTextField Taxfield;
// Total and text field
private JLabel TotLabel;
private JTextField Totfield;

// Panels
private JPanel Dpanel; // Deck panel
private JPanel Trpanel; // Trucks panel
private JPanel Wpanel; // Wheel panel
private JPanel ATitleP; // Accessories Title
private JPanel Apanel; //accessories panel
private JPanel Stpanel; // Subtotal panel
private JPanel Taxpanel; // Tax panel
private JPanel Totpanel; // Total panel


public SB2_Designer() {
// Set the title bar text.
setTitle("Skateboard Designer");

// Set the size of the window.
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Add a GridLayout manager to the content pane.
setLayout(new GridLayout(9, 1));

// Build the panels.
buildDpanel();
buildTrpanel();
buildWpanel();
buildATitle();
buildApanel();
buildStpanel();
buildTaxpanel();
buildTotpanel();


add(Dpanel);
add(Trpanel);
add(Wpanel);
add(ATitleP);
add(Apanel);
add(Stpanel);
add(Taxpanel);
add(Totpanel);

pack();
setVisible(true);
}


// Deck panel
private void buildDpanel() {

Dpanel = new JPanel();
Dlabel = new JLabel("Decks");
Dpanel.add(Dlabel);
Dbox = new JComboBox(Decks);
Dpanel.add(Dbox);
}

public double getDeckPrice() {
double deckPrice = 0.0;

if (Dbox.getSelectedItem().equals("The Master Thrasher: $60"))
deckPrice = _Master;

else if (Dbox.getSelectedItem().equals("The Dictator: $45"))
deckPrice = _Dictat;

else if (Dbox.getSelectedItem().equals("The Street King: $50"))
deckPrice = _Street;

return deckPrice;
}


// Truck panel
private void buildTrpanel() {

Trpanel = new JPanel();
Trlabel = new JLabel("Trucks");
Trbox = new JComboBox(Trucks);
Trpanel.add(Trlabel);
Trpanel.add(Trbox);
}

public double getTruckPrice() {
double TruckPrice = 0.0;

if (Trbox.getSelectedItem().equals("7.75 inch axle: $35"))
TruckPrice = _sevenSeven;

else if (Trbox.getSelectedItem().equals("8 inch axle: $40"))
TruckPrice = _eight;

else if (Trbox.getSelectedItem().equals("8.5 inch axle: $45"))
TruckPrice = _eightFive;

return TruckPrice;
}

// Wheel panel
private void buildWpanel() {

Wpanel = new JPanel();
Wlabel = new JLabel("Wheels");
Wbox = new JComboBox(Wheels);
Wpanel.add(Wlabel);

Wpanel.add(Wbox);
}

public double getWheelPrice() {
double WheelPrice = 0.0;

if (Wbox.getSelectedItem().equals("51 mm: $20"))
WheelPrice = _fiveOne;

else if (Wbox.getSelectedItem().equals("55 mm: $22"))
WheelPrice = _fiveFive;

else if (Wbox.getSelectedItem().equals("58 mm: $24"))
WheelPrice = _fiveEight;

else if (Wbox.getSelectedItem().equals("61 mm: $28"))
WheelPrice = _sixOne;

return WheelPrice;
}


private void buildATitle() {
// Create a label.
Atitle = new JLabel("Select from the differect accessories below");
ATitleP = new JPanel();
ATitleP.add(Atitle);

}

private void buildApanel() {

// Create the check boxes.
GripBox = new JCheckBox("Grip Tape: $10");
BearBox = new JCheckBox("Bearings: $30");
RiseBox = new JCheckBox("Riser Pads: $2");
BoltBox = new JCheckBox("Nuts & Bolts Kit: $3");

// adds check box panel
Apanel = new JPanel();
Apanel.add(GripBox);
Apanel.add(BearBox);
Apanel.add(RiseBox);
Apanel.add(BoltBox);
}

public double getAccprice() {
double Accprice = 0;

if (GripBox.isSelected())
Accprice += _Grip;
if (BearBox.isSelected())
Accprice += _Bear;
if (RiseBox.isSelected())
Accprice += _Rise;
if (BoltBox.isSelected())
Accprice += _Bolt;

return Accprice;
}

private void buildStpanel() {
StLabel = new JLabel("Sub-Total:");
Stfield = new JTextField(10);
Stfield.setEditable(false);
Stfield.setText("0.00");

Stpanel = new JPanel();
Stpanel.add(StLabel);
Stpanel.add(Stfield);
}

private void buildTaxpanel() {
TaxLabel = new JLabel("Tax:");
Taxfield = new JTextField(10);
Taxfield.setEditable(false);
Taxfield.setText("0.00");

Taxpanel = new JPanel();
Taxpanel.add(TaxLabel);
Taxpanel.add(Taxfield);
}

private void buildTotpanel() {
TotLabel = new JLabel("Total:");
Totfield = new JTextField(10);
Totfield.setEditable(false);
Totfield.setText("0.00");

Totpanel = new JPanel();
Totpanel.add(TotLabel);
Totpanel.add(Totfield);
}


public void calc() {
double subtotal;
double salestax = 0.06;
double total;
double tax;


DecimalFormat dollar = new DecimalFormat("#,##0.00");

subtotal = getDeckPrice() + getTruckPrice() + getWheelPrice();

//get tax rate
tax = subtotal * salestax;

//calc tax amount
total = subtotal + tax;

//parse and format tax amount
//set tax text field with tax amount
Stfield.setText(dollar.format(subtotal));
Taxfield.setText(dollar.format(tax));
Totfield.setText(dollar.format(total));

}


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

最佳答案

我自己,我会从所有这些组件中删除监听器,而是将一个 JButton 添加到您的 GUI,一个“完整的”JButton,一个按钮,其职责是让用户告诉应用程序他已完成将所有信息输入到GUI,现在要计算他的帐单。一个监听器将被添加到那个 JButton 上,当按下时,它将查询您的 JComboBoxes、JRadioButtons 和 JCheckBoxes 的状态,并汇总所有内容。

关于java - 处理多个 Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34345452/

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