未解决的编译和一系列未解决的变量错误

时间:2014-06-04 16:56:25

标签: java user-interface listener actionlistener

这里的发布社区是新手,但我已经达成了我的智慧......我对GUI非常不熟悉,所以这里有:我需要能够使下面的Listener类与rnaSeq正确通信类。

public class RNA5 {
private static TreeMap<String, ArrayList<String>> filtered = new TreeMap<String, ArrayList<String>>();
private static ArrayList<String> ITEMS = new ArrayList<String>();

public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    infile();
    new rnaSeq();
}

public static TreeMap<String, ArrayList<String>> infile() throws IOException {
    InputStream stream = new FileInputStream("C:\\NEW.txt");
    BufferedReader infile = new BufferedReader(new InputStreamReader(stream));
    int i = 0;
    while(infile.ready()) {
        ArrayList<String> s = new ArrayList<String>(Arrays.asList(infile.readLine().split("\t")));
        if(i == 0) {
            for(int j = 0; j < s.size(); j++) {
                ITEMS.add(s.get(j));
            }
        }
        else {
            String firstColumn = s.get(0);
            s.remove(0);
            filtered.put(firstColumn, s);
        }
        i++;
    }
    infile.close();

    return filtered;
}

JFrame window;
JMenuBar menuBar;
JMenu mnFile, mnEdit, mnHelp;
JPanel panel, panel_1, panel_2, panel_3;
TextArea textArea_2, textArea, textArea_1;
JButton btnNewButton_1, btnNewButton, btnNewButton_2, btnNewButton_3, btnNewButton_4, btnNewButton_5, btnNewButton_6, btnNewButton_7;
JTabbedPane tabbedPane;
rnaSeq.Listener listener;

public rnaSeq() {
    window = new JFrame();
    window.setSize(800,400);

    menuBar = new JMenuBar();
    window.setJMenuBar(menuBar);

    mnFile = new JMenu("File");
    menuBar.add(mnFile);

    mnEdit = new JMenu("Edit");
    menuBar.add(mnEdit);

    mnHelp = new JMenu("Help");
    menuBar.add(mnHelp);
    window.getContentPane().setLayout(new java.awt.GridLayout(0, 2, 0, 0));

    panel = new JPanel();
    window.getContentPane().add(panel);
    panel.setLayout(new java.awt.GridLayout(0, 2, 0, 0));

    textArea_2 = new TextArea();
    panel.add(textArea_2);

    panel_1 = new JPanel();
    panel.add(panel_1);
    panel_1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

    btnNewButton_1 = new JButton("Enter");
    panel_1.add(btnNewButton_1);
    btnNewButton_1.addActionListener(listener);

    btnNewButton = new JButton("Create");
    panel_1.add(btnNewButton);
    btnNewButton.addActionListener(listener);

    btnNewButton_2 = new JButton("Clear");
    panel_1.add(btnNewButton_2);
    btnNewButton_2.addActionListener(listener);

    btnNewButton_3 = new JButton("Clear All");
    panel_1.add(btnNewButton_3);
    btnNewButton_3.addActionListener(listener);

    btnNewButton_5 = new JButton("Select");
    panel_1.add(btnNewButton_5);
    btnNewButton_5.addActionListener(listener);

    btnNewButton_6 = new JButton("Sort");
    panel_1.add(btnNewButton_6);
    btnNewButton_6.addActionListener(listener);

    btnNewButton_7 = new JButton("Range");
    panel_1.add(btnNewButton_7);
    btnNewButton_7.addActionListener(listener);

    btnNewButton_4 = new JButton("Link");
    panel_1.add(btnNewButton_4);
    btnNewButton_4.addActionListener(listener);

    panel_3 = new JPanel();
    panel.add(panel_3);
    panel_3.setLayout(new java.awt.GridLayout(1, 0, 0, 0));

    panel_2 = new JPanel();
    panel.add(panel_2);

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    window.getContentPane().add(tabbedPane);
    tabbedPane.setToolTipText("");

    textArea = new TextArea();
    tabbedPane.addTab("Output", null, textArea, null);

    textArea_1 = new TextArea();
    tabbedPane.addTab("Analysis", null, textArea_1, null);

    window.setVisible(true);
    window.setDefaultCloseOperation(3);
}

class Listener implements ActionListener {
    Listener() {}

    public void actionPerformed(ActionEvent e) {
        Component clicked = (Component)e.getSource();
        System.out.println("actionPerformed is working!");
        if(clicked == rnaSeq.btnNewButton_1) {
            openDialogInput(0);
            System.out.println("clicked is working!");
        }
        else if(clicked == rnaSeq.btnNewButton) {
            openDialogInput(1);
        }
        else if(clicked == rnaSeq.btnNewButton_2) {
            openDialogInput(2);
        }
        else if(clicked == rnaSeq.btnNewButton_3) {
            openDialogInput(3);
        }
        else if(clicked == rnaSeq.btnNewButton_4) {
            openDialogInput(4);
        }
        else if(clicked == rnaSeq.btnNewButton_5) {
            openDialogInput(5);
        }
        else if(clicked == rnaSeq.btnNewButton_6) {
            openDialogInput(6);
        }
        else if(clicked == rnaSeq.btnNewButton_7) {
            openDialogInput(7);
        }
    }

    public String openDialogInput(int i) {
        String input = (String)JOptionPane.showInputDialog(null, "", "Input Type", JOptionPane.QUESTION_MESSAGE, null, ITEMS.toArray(new String[ITEMS.size()]), ITEMS.toArray(new String[ITEMS.size()])[0]);
        return openDialogOutput(input, i);
    }

    public String openDialogOutput(String input, int i) {
        JList<String> list = new JList<String>(ITEMS.toArray(new String[ITEMS.size()]));
        JOptionPane.showMessageDialog(null, list, "Output Type", JOptionPane.QUESTION_MESSAGE);
        ArrayList<String> output = new ArrayList<String>();
        output.addAll((Collection<? extends String>)Arrays.asList((Arrays.toString(list.getSelectedIndices())).split(" ")));
        TreeMap<String, ArrayList<String>> inputOutput = new TreeMap<String, ArrayList<String>>();
        inputOutput.put(input, output);
        return evaluate(inputOutput, i);
    }

    public String evaluate(TreeMap<String, ArrayList<String>> inputOutput, int i) {
        int in = -1;
        ArrayList<Integer> out = new ArrayList<Integer>();
        for(int j = 0; j < ITEMS.size(); j++) {
            for(Map.Entry<String, ArrayList<String>> entry : inputOutput.entrySet()) {
                if(entry.getKey() == ITEMS.get(j)) {
                    in = j;
                    for(int k = 0; k < ITEMS.size(); k++) {
                        for(Map.Entry<String, ArrayList<String>> entry2 : inputOutput.entrySet()) {
                            for(int m = 0; m < entry2.getValue().size(); m++) {
                                if(entry2.getValue().get(m) == ITEMS.get(k)) {
                                    out.add(k);
                                }
                            }
                        }
                    }
                }
            }
        }
        return setText(in, out, i);
    }

    public String getText() {
        return "";

    }

    public String setText(Integer in, ArrayList<Integer> out, int i) {
        if(in == -1) {
            return "";
        }
        else {
            StringBuilder c = new StringBuilder();
            for(int j = 0; 0 < out.size(); j++) {
                if(j == out.get(j)) {
                    c.append(ITEMS.get(j) + "\t");
                }
                c.append("\r\n");
            }
            return c.toString();
        }
    }
}
}

我觉得这是一个我不知道的愚蠢问题...如果需要更多信息,请告诉我!

编辑:更具体的错误是:(1)rnaSeq.Listener无法解析为类型(rnaSeq.Listener监听器),(2)方法的返回类型丢失(public rnaSeq()...这是一个内部类),(3)监听器无法解析为变量(btnNewButton_1.addActionListener(监听器)及其兄弟),(4)btnNewButton无法解析或不是字段及其兄弟。基本上,我认为错误(3)和(4)根植于错误(1)和(2)。

1 个答案:

答案 0 :(得分:1)

1)在这一行:

rnaSeq.Listener listener;

您已经说过要使用在Listener类中 rnaSeq类。没有这样的课程rnaSeq。将其更改为:

Listener listener;

2)这一行:

public rnaSeq() {

看起来它正试图成为rnaSeq类的构造函数。但是你只能在rnaSeq的类声明中声明rnaSeq类的构造函数,并且代码中没有这样的类声明。

其他错误可能是由这两个错误造成的。


顺便说一句,非常糟糕的样式使用rnaSeq作为Java类的名称。 Java类名应始终以大写字母开头。