|
|
Welcome to the Java Forums.
You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community, you will:
- have access to post topics
- communicate privately with other members (PM)
- not see advertisements between posts
- have the possibility to earn one of our surprises if you are an active member
- access many other special features that will be introduced later.
Registration is fast, simple and absolutely free so please, join our community today!
If you have any problems with the registration process or your account login, please contact us.
|
|

11-02-2007, 07:59 PM
|
|
Member
|
|
Join Date: Jul 2007
Posts: 46
|
|
|
Need Help With Button Events
I'm trying to create an application that utilizes a form to gather info from the user. The form has 4 buttons - start, exit, clear and search. I'm trying to program the appropriate actions for these buttons but no matter what I also have an error. When I have tried to compile I get and error to the effect that the variable is non-static and cannot be run.
Can anybody help me out?
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class FlightInterface {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JLabel title = new JLabel("Flight Info");
title.setFont(new Font("Serif", Font.BOLD, 30));
JPanel bannerPanel = new JPanel();
bannerPanel.setPreferredSize(new Dimension(300, 50));
bannerPanel.add(title);
JTextField nameInputField = new JTextField();
JLabel inputAirlineName = new JLabel("Airline Name: ");
inputAirlineName.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel namePanel = new JPanel();
namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.X_AXIS));
namePanel.setPreferredSize(new Dimension(200, 20));
namePanel.add(inputAirlineName);
namePanel.add(nameInputField);
JLabel inputFlightNum = new JLabel("Flight Number: ");
inputFlightNum.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField flightNumField = new JTextField();
JPanel flightNumPanel = new JPanel();
flightNumPanel.setLayout(new BoxLayout(flightNumPanel, BoxLayout.X_AXIS));
flightNumPanel.setPreferredSize(new Dimension(200, 20));
flightNumPanel.add(inputFlightNum);
flightNumPanel.add(flightNumField);
JLabel inputOrigin = new JLabel("City of Origin: ");
inputOrigin.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField originField = new JTextField();
JPanel originPanel = new JPanel();
originPanel.setLayout(new BoxLayout(originPanel, BoxLayout.X_AXIS));
originPanel.setPreferredSize(new Dimension(200, 20));
originPanel.add(inputOrigin);
originPanel.add(originField);
JLabel inputDestination = new JLabel("Destination City: ");
inputDestination.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField destinationField = new JTextField();
JPanel destinationPanel = new JPanel();
destinationPanel.setLayout(new BoxLayout(destinationPanel, BoxLayout.X_AXIS));
destinationPanel.setPreferredSize(new Dimension(200, 20));
destinationPanel.add(inputDestination);
destinationPanel.add(destinationField);
JPanel blankPanel = new JPanel();
blankPanel.setLayout(new BoxLayout(blankPanel, BoxLayout.X_AXIS));
blankPanel.setPreferredSize(new Dimension(200, 20));
JButton startButton = new JButton("Get Data");
startButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton exitButton = new JButton("Exit");
exitButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton searchButton = new JButton("Search");
searchButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton clearButton = new JButton("Clear");
clearButton.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
buttonPanel.setPreferredSize(new Dimension(250, 20));
buttonPanel.add(startButton);
buttonPanel.add(clearButton);
buttonPanel.add(searchButton);
buttonPanel.add(exitButton);
JPanel mainPanel = new JPanel();
mainPanel.add(bannerPanel, BorderLayout.NORTH);
mainPanel.add(namePanel, BorderLayout.CENTER);
mainPanel.add(flightNumPanel, BorderLayout.CENTER);
mainPanel.add(originPanel, BorderLayout.CENTER);
mainPanel.add(destinationPanel, BorderLayout.CENTER);
mainPanel.add(blankPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
JFrame f = new JFrame(); // creates new instance of JFrame so graph can be displayed
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // tells JFrame to close on exit
f.getContentPane().add(mainPanel);
f.setSize(300, 265); // sets size of JFrame
f.setLocation(200, 200); // sets location of JFrame
f.setVisible(true); // makes JFrame visible
} // end main
} // end class
Thanks
|
|

11-02-2007, 09:04 PM
|
|
Senior Member
|
|
Join Date: Jul 2007
Posts: 1,022
|
|
Your code compiles and runs okay. Here's a suggestion.
import java.awt.*;
import javax.swing.*;
public class FI {
private JPanel getContent() {
JLabel title = new JLabel("Flight Info");
title.setFont(new Font("Serif", Font.BOLD, 30));
JPanel bannerPanel = new JPanel();
bannerPanel.setPreferredSize(new Dimension(300, 50));
bannerPanel.add(title);
JTextField nameInputField = new JTextField();
JLabel inputAirlineName = new JLabel("Airline Name: ");
inputAirlineName.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel namePanel = new JPanel();
namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.X_AXIS));
namePanel.setPreferredSize(new Dimension(200, 20));
namePanel.add(inputAirlineName);
namePanel.add(nameInputField);
JLabel inputFlightNum = new JLabel("Flight Number: ");
inputFlightNum.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField flightNumField = new JTextField();
JPanel flightNumPanel = new JPanel();
flightNumPanel.setLayout(new BoxLayout(flightNumPanel, BoxLayout.X_AXIS));
flightNumPanel.setPreferredSize(new Dimension(200, 20));
flightNumPanel.add(inputFlightNum);
flightNumPanel.add(flightNumField);
JLabel inputOrigin = new JLabel("City of Origin: ");
inputOrigin.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField originField = new JTextField();
JPanel originPanel = new JPanel();
originPanel.setLayout(new BoxLayout(originPanel, BoxLayout.X_AXIS));
originPanel.setPreferredSize(new Dimension(200, 20));
originPanel.add(inputOrigin);
originPanel.add(originField);
JLabel inputDestination = new JLabel("Destination City: ");
inputDestination.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField destinationField = new JTextField();
JPanel destinationPanel = new JPanel();
destinationPanel.setLayout(new BoxLayout(destinationPanel, BoxLayout.X_AXIS));
destinationPanel.setPreferredSize(new Dimension(200, 20));
destinationPanel.add(inputDestination);
destinationPanel.add(destinationField);
JPanel blankPanel = new JPanel();
blankPanel.setLayout(new BoxLayout(blankPanel, BoxLayout.X_AXIS));
blankPanel.setPreferredSize(new Dimension(200, 20));
JButton startButton = new JButton("Get Data");
startButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton exitButton = new JButton("Exit");
exitButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton searchButton = new JButton("Search");
searchButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton clearButton = new JButton("Clear");
clearButton.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
// buttonPanel.setPreferredSize(new Dimension(250, 20));
buttonPanel.add(startButton);
buttonPanel.add(clearButton);
buttonPanel.add(searchButton);
buttonPanel.add(exitButton);
JPanel mainPanel = new JPanel();
System.out.println("JPanel default layout manager = " +
mainPanel.getLayout().getClass().getName());
mainPanel.add(bannerPanel, BorderLayout.NORTH);
mainPanel.add(namePanel, BorderLayout.CENTER);
mainPanel.add(flightNumPanel, BorderLayout.CENTER);
mainPanel.add(originPanel, BorderLayout.CENTER);
mainPanel.add(destinationPanel, BorderLayout.CENTER);
mainPanel.add(blankPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
return mainPanel;
}
public static void main(String[] args) {
// Using the variable "app" will help avoid problems
// with the static modifier in your class.
FI app = new FI();
// creates new instance of JFrame so graph can be displayed
JFrame f = new JFrame();
// tells JFrame to close on exit
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(app.getContent());
f.setSize(300, 265); // sets size of JFrame
f.setLocation(200, 200); // sets location of JFrame
f.setVisible(true); // makes JFrame visible
} // end main
} // end class
|
|

11-02-2007, 09:11 PM
|
|
Member
|
|
Join Date: Jul 2007
Posts: 46
|
|
|
Hardwired,
I will give it a try. Thanks for the tip. I'm starting to get it as I actually handcoded the form which I was quite impressed with myself for.
|
|

11-02-2007, 10:07 PM
|
|
Member
|
|
Join Date: Jul 2007
Posts: 46
|
|
Hardwired,
I'm still getting error messages but at least they are different ones. Here is the code I have. I'm just trying to code the exit button first and once I figured that out I thought I would add in the others.
import java.awt.*;
import javax.swing.*;
public class FlightInterface {
private JPanel getContent() {
JLabel title = new JLabel("Flight Info");
title.setFont(new Font("Serif", Font.BOLD, 30));
JPanel bannerPanel = new JPanel();
bannerPanel.setPreferredSize(new Dimension(300, 50));
bannerPanel.add(title);
JTextField nameInputField = new JTextField();
JLabel inputAirlineName = new JLabel("Airline Name: ");
inputAirlineName.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel namePanel = new JPanel();
namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.X_AXIS));
namePanel.setPreferredSize(new Dimension(200, 20));
namePanel.add(inputAirlineName);
namePanel.add(nameInputField);
JLabel inputFlightNum = new JLabel("Flight Number: ");
inputFlightNum.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField flightNumField = new JTextField();
JPanel flightNumPanel = new JPanel();
flightNumPanel.setLayout(new BoxLayout(flightNumPanel, BoxLayout.X_AXIS));
flightNumPanel.setPreferredSize(new Dimension(200, 20));
flightNumPanel.add(inputFlightNum);
flightNumPanel.add(flightNumField);
JLabel inputOrigin = new JLabel("City of Origin: ");
inputOrigin.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField originField = new JTextField();
JPanel originPanel = new JPanel();
originPanel.setLayout(new BoxLayout(originPanel, BoxLayout.X_AXIS));
originPanel.setPreferredSize(new Dimension(200, 20));
originPanel.add(inputOrigin);
originPanel.add(originField);
JLabel inputDestination = new JLabel("Destination City: ");
inputDestination.setFont(new Font("Serif", Font.PLAIN, 14));
JTextField destinationField = new JTextField();
JPanel destinationPanel = new JPanel();
destinationPanel.setLayout(new BoxLayout(destinationPanel, BoxLayout.X_AXIS));
destinationPanel.setPreferredSize(new Dimension(200, 20));
destinationPanel.add(inputDestination);
destinationPanel.add(destinationField);
JPanel blankPanel = new JPanel();
blankPanel.setLayout(new BoxLayout(blankPanel, BoxLayout.X_AXIS));
blankPanel.setPreferredSize(new Dimension(200, 20));
JButton startButton = new JButton("Get Data");
startButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton exitButton = new JButton("Exit");
exitButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton searchButton = new JButton("Search");
searchButton.setFont(new Font("Serif", Font.PLAIN, 14));
JButton clearButton = new JButton("Clear");
clearButton.setFont(new Font("Serif", Font.PLAIN, 14));
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
buttonPanel.add(startButton);
buttonPanel.add(clearButton);
buttonPanel.add(searchButton);
buttonPanel.add(exitButton);
exitButton.addActionListener(this);
JPanel mainPanel = new JPanel();
System.out.println("JPanel default layout manager = " +
mainPanel.getLayout().getClass().getName());
mainPanel.add(bannerPanel, BorderLayout.NORTH);
mainPanel.add(namePanel, BorderLayout.CENTER);
mainPanel.add(flightNumPanel, BorderLayout.CENTER);
mainPanel.add(originPanel, BorderLayout.CENTER);
mainPanel.add(destinationPanel, BorderLayout.CENTER);
mainPanel.add(blankPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
return mainPanel;
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == exitButton){
System.exit(0);
}
}
public static void main(String[] args) {
// Using the variable "app" will help avoid problems
// with the static modifier in your class.
FlightInterface app = new FlightInterface();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(app.getContent());
f.setSize(300, 265); // sets size of JFrame
f.setLocation(200, 200); // sets location of JFrame
f.setVisible(true); // makes JFrame visible
} // end main
}
Here are the error messages that I get:
E:\Intro OOP\FlightInterface\src\flightinterface\FlightInte rface.java:84: illegal start of expression
public void actionPerformed(ActionEvent e){
E:\Intro OOP\FlightInterface\src\flightinterface\FlightInte rface.java:89: ';' expected
}
Thanks for your help
|
|

11-02-2007, 11:39 PM
|
|
Senior Member
|
|
Join Date: Jul 2007
Posts: 1,022
|
|
I copied, pasted (into a new folder) and compiled your last posted code and got these in the console:
C:\jexp\flightInterface>javac FlightInterface.java
FlightInterface.java:84: cannot find symbol
symbol : class ActionEvent
location: class FlightInterface
public void actionPerformed(ActionEvent e){
^
FlightInterface.java:69: addActionListener(java.awt.event.ActionListener) in jav
ax.swing.AbstractButton cannot be applied to (FlightInterface)
exitButton.addActionListener(this);
^
FlightInterface.java:85: cannot find symbol
symbol : variable exitButton
location: class FlightInterface
if(e.getSource() == exitButton){
^
3 errors
Make the following changes to compile and run okay:
// Add import statement.
import java.awt.event.*;
// Implement ActionListener so "this" can be an ActionListener
public class FlightInterface implements ActionListener {
// Declare exitButton as a member variable.
// This puts it in class scope where it can be
// accessed inside the actionPerformed method.
JButton exitButton;
startButton.setFont(new Font("Serif", Font.PLAIN, 14));
// Remove the type declaration from the instantiation so
// that exitButton is not a local variable hiding the
// member variable (of the same name) which would remain
// uninstantiated and thus have a value of null, causing
// NullPointerExceptions when you try to access it in
// the actionPerformed method.
exitButton = new JButton("Exit");
I did not get the compile errors you reported. The console errors give the line number of the trouble to help track it down. Maybe you omitted a semi-colon somewhere above the actionPerformed method.
|
|

11-03-2007, 06:36 AM
|
|
Member
|
|
Join Date: Jul 2007
Posts: 46
|
|
|
Hardwired once again you come through for me. I had the closing bracket for the JPanel method after the ActionPerformed method instead of before. I changed that and made the changes you suggested before and now it works. Thanks
|
|
| Thread Tools |
|
|
| Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|