2012-01-29 3 views
0

У меня есть два вопроса:Java Action Listener не работает

1. почему, когда я выполняю код, когда я нажимаю на кнопку P, он не показывает println. 2. Я попытался сделать фон с JLabel, он отлично работает, но не распространяется на все JFrame. Я попробовал JFrame с попыткой и поймать, и он не отображает его.

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){ 

     } 

    } 

Я надеюсь, что вы, ребята, можете помочь

Благодарности

+1

Ваш код не заполнен или не скомпилирован. Просьба представить хотя бы рабочий пример. – parasietje

+1

@ismail zaidi: Пожалуйста, придерживайтесь соглашений о присвоении имен Java, это слишком сложно понять, что при чтении фрагментов кода. С уважением –

ответ

3

Вы не показали ли вы реализовать ActionListener на классе. Тем не менее, вы лучше это сделать:

P.setActionCommand("P_BUTTON"); 

затем

if (e.getActionCommand().equals("P_BUTTON")) 

, чем то, как вы это делаете.

+0

Я реализовал actionListener, я пробовал ваш метод, все еще не работая :(. –

2

Поскольку вы используете макет, прекратите предоставлять свои личные размеры компонентам. Добавьте все объекты setPreferredSize() в качестве комментариев. Лучше добавьте JLabel в центр вместо North, чтобы он мог заполнить максимальную область компонента. Кроме того, вы получите полный код, чтобы мы могли посмотреть на вашу игру ActionListener. Для части JLabel, удалить

add(Label2, BorderLayout.NORTH); 

заменить его с этим

add(Label2, BorderLayout.CENTER); 

И для ActionListener части попробовать этот

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."); 
    } 
} 

Надежда, которая может помочь.

С уважением

5

Поскольку код, который вы публикуемую не компилируется и не может быть запущен нами, то трудно сказать, что происходит. Ниже приведено самое основное описание JButton с прикрепленным к нему ActionListener, которое печатает что-то при каждом нажатии кнопки. Сравните это с кодом, чтобы найти различия, или настройте код на 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); 
     } 
    }); 
    } 
} 
Смежные вопросы