java - 需要根据从 JList 中选择的项目设置 double 值

标签 java jlist

到目前为止我的代码:

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/

相关文章:

java - do while 循环后无法继续执行 main 方法

java - 在文本区域插入非常大的字符串时,浏览器不支持 : selenium :java

java - Jenkins 1.596.3 与 java 1.6.24 和 web 逻辑 10.3.5,版本兼容性

java - Java 更新后 Eclipse 中出现错误

java - 从 JList 中获取多个选定项

java - 在 JList 失去焦点后保留 JList 选择?

java - 当框架太小无法显示所有 JList 时,如何让滚动条出现在 JList 上?

java - 如何在选择第一项的情况下启动 Jlist?

java - Jlist 未在字符串中显示我的项目

java - java while循环中多个条件的问题