到目前为止我的代码:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class TestFile2 {
public static void main(String args[]) {
String size[] = {"Small", "Medium", "Large", "Extra Large"};
String toppings[] = {"Cheese", "Pepperoni", "Sausage", "Spinach", "Pepperoncini"};
JFrame f = new JFrame("Pizza");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JList list1 = new JList(size);
JList list2 = new JList(toppings);
Container c = f.getContentPane();
JScrollPane sp1 = new JScrollPane(list1);
sp1.setColumnHeaderView(new JLabel("Select Size"));
JScrollPane sp2 = new JScrollPane(list2);
sp2.setColumnHeaderView(new JLabel("Select Toppings. Hold Ctrl to select multiple toppings"));
Box box = Box.createHorizontalBox();
box.add(sp1);
box.add(sp2);
list1.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
JList jListSource = (JList) e.getSource();
Object[] selection = jListSource.getSelectedValues();
if (!e.getValueIsAdjusting()) {
System.out.println("----");
for (int i = 0; i < selection.length; i++) {
double costSize;
if (selection[i].equals("Small")) {
costSize = 7.00;
} else if (selection[i].equals("Medium")) {
costSize = 9.00;
} else if (selection[i].equals("Large")) {
costSize = 11.00;
} else {
costSize = 14.00;
}
System.out.println("selection = " + selection[i]);
System.out.println("selection = " + costSize);
}
}
}
});
c.add(box, BorderLayout.CENTER);
f.setSize(
300, 200);
f.setVisible(
true);
}
}
我需要做一些类似于我对 list1 所做的事情。
我需要让用户从 JList 中选择披萨的大小和配料。最后我需要能够计算出总成本。每个浇头是 1 美元。任何指向某个方向的观点都将不胜感激,因为在过去的几个小时里我一直在努力尝试不同的方法来解决这个问题。
提前致谢。
最佳答案
我希望这会有所帮助 :) ...还有其他方法可以做到...这只是其中之一...
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class TestFile2 {
private static JList list1;
private static JList list2;
public static void main(String args[]) {
String size[] = {"Small", "Medium", "Large", "Extra Large"};
String toppings[] = {"Cheese", "Pepperoni", "Sausage", "Spinach", "Pepperoncini"};
JFrame f = new JFrame("Pizza");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
list1 = new JList(size);
list2 = new JList(toppings);
Container c = f.getContentPane();
JScrollPane sp1 = new JScrollPane(list1);
sp1.setColumnHeaderView(new JLabel("Select Size"));
JScrollPane sp2 = new JScrollPane(list2);
sp2.setColumnHeaderView(new JLabel("Select Toppings. Hold Ctrl to select multiple toppings"));
Box box = Box.createHorizontalBox();
box.add(sp1);
box.add(sp2);
list1.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
handleEvent(e);
}
});
list2.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
handleEvent(e);
}
});
c.add(box, BorderLayout.CENTER);
f.setSize(
300, 200);
f.setVisible(
true);
}
protected static void handleEvent(ListSelectionEvent e)
{
double cost = 0.0;
Object[] selection = list1.getSelectedValues();
Object[] toppings = list2.getSelectedValues();
if(toppings.length == 0)
System.out.println("Please select a topping");
if(selection.length == 0)
System.out.println("Please select a size");
if (!e.getValueIsAdjusting())
{
System.out.println("----");
for (int i = 0; i < selection.length; i++)
{
double costSize;
if (selection[i].equals("Small")) {
cost = 7.00;
} else if (selection[i].equals("Medium")) {
cost = 9.00;
} else if (selection[i].equals("Large")) {
cost = 11.00;
} else {
cost = 14.00;
}
}
for (int i = 0; i < toppings.length; i++)
{
cost++;
}
System.out.println("Total = " + cost);
}
}
}
关于java - 需要根据从 JList 中选择的项目设置 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801231/