0

我的问题是它找不到符号,但我已经在该类之前声明了“r1button”。已经用谷歌搜索过类似的问题,但似乎找不到。我在 'e.getSource()==r1button' 部分出现错误。

package projectwindow;

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

public class ProjectWindow extends JFrame {

    public static void main(String[] args) {
        JFrame nframe = new JFrame ("Bus Reservation");
        nframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel ContentPane = new JPanel();
        //ContentPane.setBackground();
        ContentPane.setLayout(new GridBagLayout());

        JLabel row1 = new JLabel("A1", SwingConstants.LEFT);            
        row1.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row1.setHorizontalAlignment(JLabel.LEFT);
        JButton r1button = new JButton("reserve A1"); 
        r1button.setAlignmentX(JButton.LEFT_ALIGNMENT);

        JLabel r1c2Lab = new JLabel ("A2", SwingConstants.CENTER);
        JButton r1c2Button = new JButton ("reserve A2");

        JLabel row2 = new JLabel("B1", SwingConstants.LEFT);
        row2.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row2.setHorizontalAlignment(JLabel.LEFT);
        JButton r2button = new JButton("reserve B1");

        JLabel r2c2Lab = new JLabel("B2");
        JButton r2c2Button = new JButton("reserve B2");

        JLabel row3 = new JLabel("C1",SwingConstants.LEFT);
        row3.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row3.setHorizontalAlignment(JLabel.LEFT);
        JButton r3button = new JButton("reserve C1");

        JLabel r3c2Lab = new JLabel ("C2");
        JButton r3c2Button = new JButton ("reserve C2");

        JLabel row4 = new JLabel("D1",SwingConstants.LEFT);
        row4.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row4.setHorizontalAlignment(JLabel.LEFT);
        JButton r4button = new JButton("reserve D1");

        JLabel r4c2Lab = new JLabel ("D2");
        JButton r4c2Button = new JButton ("reserve D2");

        JLabel row5 = new JLabel("E1",SwingConstants.LEFT);
        row5.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row5.setHorizontalAlignment(JLabel.LEFT);
        JButton r5button = new JButton("reserve E1");

        JLabel r5c2Lab = new JLabel ("E2");
        JButton r5c2Button = new JButton ("reserve E2");

        JLabel row6 = new JLabel("F1",SwingConstants.LEFT);
        row6.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row6.setHorizontalAlignment(JLabel.LEFT);
        JButton r6button = new JButton("reserve F1");

        JLabel r6c2Lab = new JLabel ("F2");
        JButton r6c2Button = new JButton ("reserve F2");

        JLabel row7 = new JLabel("G1",SwingConstants.LEFT);
        row7.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row7.setHorizontalAlignment(JLabel.LEFT);
        JButton r7button = new JButton("reserve G1");

        JLabel r7c2Lab = new JLabel("G2");
        JButton r7c2Button = new JButton ("reserve G2");

        JLabel row8 = new JLabel("H1",SwingConstants.LEFT);
        row8.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row8.setHorizontalAlignment(JLabel.LEFT);
        JButton r8button = new JButton("reserve H1");

        JLabel r8c2Lab = new JLabel ("H2");
        JButton r8c2Button = new JButton ("reserve H2");

        JLabel row9 = new JLabel("I1",SwingConstants.LEFT);
        row9.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row9.setHorizontalAlignment(JLabel.LEFT);
        JButton r9button = new JButton("reserve I1");

        JLabel r9c2Lab = new JLabel ("I2");
        JButton r9c2Button = new JButton ("reserve I2");

        JLabel row10 = new JLabel("J1",SwingConstants.LEFT);
        row10.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        row10.setHorizontalAlignment(JLabel.LEFT);
        JButton r10button = new JButton("reserve J1");

        JLabel r10c2Lab = new JLabel ("J2");
        JButton r10c2Button = new JButton ("reserve J2");

        //counter 1
        JLabel counterLab = new JLabel ("Counter");
        JTextField counter = new JTextField (15);

        //receipt
        JLabel recLab = new JLabel ("Receipt");
        JTextField recText = new JTextField (15);

        //clear
        JButton total = new JButton ("total");
        JButton clr = new JButton ("clear");

        //bill
        JLabel Blabel = new JLabel ("Bill");
        JTextField bill = new JTextField (15);

        GridBagConstraints cons = new GridBagConstraints();

        //textfield counter
        cons.gridx = 400;
        cons.gridy = 3;
        ContentPane.add(counterLab, cons);
        cons.insets = new Insets (10,10,0,0);
        cons.gridx = 400;
        cons.gridy = 4;
        ContentPane.add(counter, cons);

        //receipt
        cons.gridx = 400;
        cons.gridy = 5;
        ContentPane.add(Blabel, cons);
        cons.gridx = 400;
        cons.gridy = 6;
        ContentPane.add(bill, cons);

        //bill
        cons.gridx = 400;
        cons.gridy = 7;
        ContentPane.add(recLab, cons);
        cons.gridx = 400;
        cons.gridy = 8;
        ContentPane.add(recText, cons);

        //total
        cons.gridx = 400;
        cons.gridy = 9;
        ContentPane.add(total, cons);

        //clear
        cons.gridx = 400;
        cons.gridy = 10;
        ContentPane.add(clr, cons);

        //column 2
        cons.insets = new Insets (0,0,10,10);
        cons.gridx = 40;
        cons.gridy = 1;
        ContentPane.add(r1c2Lab,cons);
        cons.gridx = 40;
        cons.gridy = 2;
        ContentPane.add(r1c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 3;
        ContentPane.add(r2c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 4;
        ContentPane.add(r2c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 5;
        ContentPane.add(r3c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 6;
        ContentPane.add(r3c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 7;
        ContentPane.add(r4c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 8;
        ContentPane.add(r4c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 9;
        ContentPane.add(r5c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 10;
        ContentPane.add(r5c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 11;
        ContentPane.add(r6c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 12;
        ContentPane.add(r6c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 13;
        ContentPane.add(r7c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 14;
        ContentPane.add(r7c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 15;
        ContentPane.add(r8c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 16;
        ContentPane.add(r8c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 17;
        ContentPane.add(r9c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 18;
        ContentPane.add(r9c2Button, cons);
        cons.gridx = 40;
        cons.gridy = 19;
        ContentPane.add(r10c2Lab, cons);
        cons.gridx = 40;
        cons.gridy = 20;
        ContentPane.add(r10c2Button, cons);

        //column 1 
        cons.insets = new Insets (0,0,10,10);
        cons.gridx = 0;
        cons.gridy = 1;
        ContentPane.add(row1,cons); 
        cons.gridx = 0;
        cons.gridy = 2;
        ContentPane.add(r1button,cons);
        cons.gridx = 0;
        cons.gridy = 3;
        ContentPane.add(row2,cons);
        cons.gridx = 0;
        cons.gridy = 4;
        ContentPane.add(r2button,cons);
        cons.gridx = 0;
        cons.gridy = 5;
        ContentPane.add(row3,cons);
        cons.gridx = 0;
        cons.gridy = 6;
        ContentPane.add(r3button,cons);
        cons.gridx = 0;
        cons.gridy = 7;
        ContentPane.add(row4,cons);
        cons.gridx = 0;
        cons.gridy = 8;
        ContentPane.add(r4button,cons);
        cons.gridx = 0;
        cons.gridy = 9;
        ContentPane.add(row5,cons);
        cons.gridx = 0;
        cons.gridy = 10;
        ContentPane.add(r5button,cons);
        cons.gridx = 0;
        cons.gridy = 11;
        ContentPane.add(row6,cons);
        cons.gridx = 0;
        cons.gridy = 12;
        ContentPane.add(r6button,cons);
        cons.gridx = 0;
        cons.gridy = 13;
        ContentPane.add(row7,cons);
        cons.gridx = 0;
        cons.gridy = 14;
        ContentPane.add(r7button,cons);
        cons.gridx = 0;
        cons.gridy = 15;
        ContentPane.add(row8,cons);
        cons.gridx = 0;
        cons.gridy = 16;
        ContentPane.add(r8button,cons);
        cons.gridx = 0;
        cons.gridy = 17;
        ContentPane.add(row9,cons);
        cons.gridx = 0;
        cons.gridy = 18;
        ContentPane.add(r9button,cons);
        cons.gridx = 0;
        cons.gridy = 19;
        ContentPane.add(row10,cons);
        cons.gridx = 0;
        cons.gridy = 20;
        ContentPane.add(r10button,cons);

        // progHandler handler = new progHandler();
        // col1 
        r1button.addActionListener(new progHandler());
        r2button.addActionListener(new progHandler());
        r3button.addActionListener(new progHandler());
        r4button.addActionListener(new progHandler());
        r5button.addActionListener(new progHandler());
        r6button.addActionListener(new progHandler());
        r7button.addActionListener(new progHandler());
        r8button.addActionListener(new progHandler());
        r9button.addActionListener(new progHandler());
        r10button.addActionListener(new progHandler());

        // col2
        r1c2Button.addActionListener(new progHandler());
        r2c2Button.addActionListener(new progHandler());
        r3c2Button.addActionListener(new progHandler());
        r4c2Button.addActionListener(new progHandler());
        r5c2Button.addActionListener(new progHandler());
        r6c2Button.addActionListener(new progHandler());
        r7c2Button.addActionListener(new progHandler());
        r8c2Button.addActionListener(new progHandler());
        r9c2Button.addActionListener(new progHandler());
        r10c2Button.addActionListener(new progHandler());

        nframe.add(ContentPane);
        nframe.pack();
        nframe.setSize(450,750);
        nframe.setVisible(true);       
    }

    static class progHandler implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==r1button)//this is the symbol that it cannot find. 
        }
    }
}
4

2 回答 2

2

r1button您仅在您的方法中声明和定义main(),因此它对您的actionPerformed()函数是不可见的。而是在类字段中声明r1button,即在JButton r1button;下面添加public class ProjectWindow extends JFrame {

于 2013-09-28T04:45:45.867 回答
2

progHandler 类中没有名为 r1button 的变量。所以很明显这个名字不会被解析。相反,你可以做类似的事情

static class progHandler implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e){

        if(e.getSource().getClass().equals(JButton.class))
        {
            JButton buttonPressed = (JButton)e.getSource();
            if(buttonPressed.getName().equals("reserve A1"))//this is the symbol that it cannot find.
            {
                //do whatever you want
            }
        }
    }
}
于 2013-09-28T05:17:05.947 回答