Reputation: 21
I have two questions:
1 . why when I execute the code, when I click on the button P it doesn't show the println. 2. I have tried to make a background with JLabel it works fine but it doesn't cover all of the JFrame. I tried JFrame with try and catch and it doesn't display it.
JPanel L1 = new JPanel();
JButton P = new JButton("Open");
JButton P1 = new JButton("Cancel");
Dimension D = new Dimension(80 , 30);
Container C = getContentPane();
JLabel Label2 = new JLabel(new
super.setTitle("Ismail Application");
//Buttons
//Button 1
P.setToolTipText("Click To Open");
P.setPreferredSize(D);
//Button 2
P1.addActionListener(this);
P1.setToolTipText("Click to exit program");
P1.setPreferredSize(D);
//Adding Components
L1.add(P, BorderLayout.WEST);
L1.add(P1, BorderLayout.EAST);
add(L1, BorderLayout.SOUTH);
P1.addActionListener(this);
P.addActionListener(this);
//Labels
Label2.setLayout(null);
Label2.setSize(400,300);
Label2.setToolTipText("This is the Background");
add(Label2, BorderLayout.NORTH);
}
public void actionPerformed (ActionEvent e)
{
if(e.getSource() == P)
{
System.out.println("not working");
}
if(e.getSource() == P1){
}
}
I hope you guys can help
Thanks
Upvotes: 0
Views: 16747
Reputation: 24626
Since you are using Layout, then stop giving your personal Dimensions to the components.Add all setPreferredSize() thingies as comments. Better add your JLabel to the Center instead of North, so that it can fill the maximum area on the component. Moreover provide a complete code so that we can look into your ActionListener thing too. For the JLabel part, remove
add(Label2, BorderLayout.NORTH);
replace it with this
add(Label2, BorderLayout.CENTER);
And for your ActionListener part try this
public void actionPerformed(ActionEvent ae)
{
JButton button = (JButton)ae.getSource();
if (button.equals(P))
{
System.out.println("not working.");
}
else if (button.equals(P1))
{
System.out.println("working.");
}
}
Hope that might help.
Regards
Upvotes: 2
Reputation: 36611
Since the code you posted does not compile and cannot be run by us, it is hard to say what is going on. See below for the most basic example of a JButton
with an ActionListener
attached to it, which prints something each time the button is pressed. Compare that with your code to find the differences, or adjust your code to a sscce.
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FrameWithButtonExample {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame( "TestFrame" );
final JButton testButton = new JButton( "TestButton" );
testButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent aActionEvent ) {
//if check to match the code from the question, but not really needed
if ( aActionEvent.getSource() == testButton ){
System.out.println("TestButton pressed");
}
}
} );
frame.add( testButton );
frame.pack();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
} );
}
}
Upvotes: 5
Reputation: 37506
You didn't show whether or not you implement ActionListener on the class. That said, you're better off doing this:
P.setActionCommand("P_BUTTON");
then
if (e.getActionCommand().equals("P_BUTTON"))
than the way you're doing it.
Upvotes: 3