编译器问题

时间:2012-07-09 18:54:43

标签: java swing compiler-errors

我一直在遇到一些我已经开始开发的Java程序的问题。这将是哈利波特成名的Honeydukes糖果店的在线订购系统,并将是两个独立的计划。客户端程序将在Swing中,并接受订单和所有这些,在订单发送时将其发送到服务器程序。服务器程序将显着不那么漂亮,其目标是将订单写入文本文件,然后向客户端程序提供绿灯,一切顺利。

对于客户端程序,我想要有三个面板,主面板包含另外两个面板。左侧是invntryPanel,包含具有商店库存的JList。右侧将保持infoPanel,它使用CardLayout在各个面板之间进行切换,使用JList中当前选定的项目来确定要显示的面板。 infoPanel也将是用户选择希望购买的数量的地方。

当用户完成订单时,可以点击我尚未确定的位置的按钮,它将显示一个单独的窗口,询问一般信息(名称等),以及显示他们的总。最后一次点击该窗口上的按钮会将订单发送到服务器程序,客户端应用程序将在收到服务器程序确认请求通过后关闭。

我已经开始使用它了,但编译器今天似乎心情不好。我做错了什么?

我为这是一个以自我为中心的问题而道歉,但我不确定在哪里可以转向。我检查了多个其他资源,我的代码似乎是有序的,但显然不是。

提前谢谢。

来源:

import javax.swing.*;
import java.util.*;
import java.awt.*;

public class ClientApp extends JFrame
{
    public static void main(String[] args)
    {
        new ClientApp();
    }


    public ClientApp()
    {
        this.setSize(320,200);
        this.setTitle("Honeydukes Candy Order");
        this.setDefaultCloseOperation(
            JFrame.EXIT_ON_CLOSE);

        ButtonListener bl = new ButtonListener();

        JPanel mainPanel = new JPanel();
        JPanel infoPanel = new JPanel(new CardLayout());
        JPanel invntryPanel = new JPanel();

        String[] candy = {"Acid Pops", "Bat's Blood Soup",
                          "Bertie Bott's Every Flavour Beans",
                          "Blood-flavoured Lollipops",
                          "Cauldron Cakes", "Charm Choc",
                          "Chocoballs", "Chocolate Cauldrons",
                          "Chocolate Frogs", "Chocolate Skeletons",
                          "Chocolate Wands", "Choco-Loco", "Cockroach Clusters",
                          "Nougat", "Crystallised Pineapple",
                          "Drooble's Best Blowing Gum", "Exploding Bonbons",
                          "Toffees", "Fizzing Whizzbees",
                          "Fudge Flies", "Ice Mice",
                          "Jelly Slugs", "Liquourice Wands",
                          "Pepper Imps", "Peppermint Toads",
                          "Pink Coconut Ice", "Pixie Puffs",
                          "Pumpkin Fizz", "Salt Water Taffy",
                          "Shock-o-Choc", "Skeletal Sweets",
                          "Splindle's Lick'O'Rish Spiders",
                          "Sugar Quills", "Sugared Butterfly Wings",
                          "Toothflossing Stringmints", "Tooth-Splintering Strongmints",
                          "Treacle Fudge", "Chocolates", "Wizochoc"};
        JList candyList = new JList(candy);
        candyList.setVisibleRowCount(candy.length);
        candyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scroll = new JScrollPane(candyList);
        invntryPanel.add(scroll);
        mainPanel.add(invntryPanel);
        this.setVisible(true);
    }
}

错误:

ClientApp.java:20: error: cannot find symbol
                BasicButtonListener bl = new BasicButtonListener();
                ^
  symbol:   class BasicButtonListener
  location: class ClientApp
ClientApp.java:20: error: cannot find symbol
                BasicButtonListener bl = new BasicButtonListener();
                                             ^
  symbol:   class BasicButtonListener
  location: class ClientApp
Note: ClientApp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors

2 个答案:

答案 0 :(得分:2)

如何开始:

String[] candy = new String[38];
String[] candy = {"Acid Pops", "Bat's Blood Soup", /* ... */ };

您尝试在同一范围内两次声明相同的变量。你不能这样做。只是摆脱第一个声明 - 第二个声明没问题。

(提示:两次删除数字38的硬编码。如果你想知道数组有多少元素,请使用candy.length。)

编辑:现在我们已经看到了编译器错误,你还需要:

  • 根据thegrinner的回答修复数组元素
  • 找出ButtonListener的意思。您的意思是使用BasicButtonListener代替吗?
  • 声明candyList变量(目前您只是尝试分配给它)
  • java.awt.CardLayout
  • 添加导入

您提供的错误相当清楚 - 除了candyList的多个问题,这些都是因为您错过了声明。

答案 1 :(得分:1)

您在糖果阵列中的"Pixie Puffs"之后错过了一个逗号。我相信这会使编译器相信该行应该在那里结束(因此错误期望})。这也导致表达错误的非法启动。