问题
my problem is that it cannot find the symbol but i already declare the 'r1button' before that class. already googled similar problems but cant seem to find one. im getting error in the 'e.getSource()==r1button' part.
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.
}
}
}
回答1:
You're declaring and defining r1button
in your main()
method only, so it's invisible to your actionPerformed()
function. Declare r1button
in the class fields instead, i.e., add JButton r1button;
right below public class ProjectWindow extends JFrame {
.
回答2:
There is no variable called r1button in class progHandler. So it is very much obvious the name will not be resolved. Instead you can do something like
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
}
}
}
}
来源:https://stackoverflow.com/questions/19063342/cannot-find-symbol-in-jbutton