【发布时间】:2014-07-25 10:46:17
【问题描述】:
这里是发布社区的新手,但我对此已经束手无策了...我对 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 listener),(2)方法的返回类型丢失(public rnaSeq()...内部类),(3)监听器无法解析为变量(btnNewButton_1.addActionListener(listener)及其兄弟),(4)btnNewButton无法解析或不是字段及其兄弟。本质上,我认为错误(3)和(4)的根源在于错误(1)和(2)。
【问题讨论】:
-
您发布了大量代码,但没有指出错误在哪里或什么错误。请帮助我们通过将代码量减少到一个简短但完整的示例来演示问题并包含错误来帮助您。 (另外,在编译之前不要尝试运行代码......)
-
对不起!错误是:(1) rnaSeq.Listener 无法解析为类型(rnaSeq.Listener 侦听器),(2) 方法的返回类型丢失(public rnaSeq()... 这是一个内部类),(3) listener 无法解析为变量(btnNewButton_1.addActionListener(listener) 及其兄弟),(4)btnNewButton 无法解析或不是字段及其兄弟。
-
基本上我需要位于 rnaSeq 中的 GUI 和 ActionListener 类进行通信,尽管我付出了数小时的努力,但似乎无法完成。
-
提示:获取代码以进行编译。这样一来,您就不会得到大量代码,其中包含多个错误需要一次性修复。
标签: java user-interface listener actionlistener