2016-05-03 3 views
0

Я пытаюсь изучить методы и классы Я создал небольшой инструмент, в котором класс Main должен запустить его, класс SWing для создания фрейма, класс Verb, чтобы создать кнопку для добавления к Swing, а также для выполнения действия, мой вопрос здесь в том, что, как я могу заставить выполняемое действие действительно работать через глагольный класс. скажем, я хочу получить текст из текстового поля и конкатенировать его с помощью textfiled1 и показать ответ на текстовое поле2. вот мой кодДобавить actionperformed к кнопке через другой класс

1- мой основной класс

package Abo; 

public class Main { 

    public static void main (String[]args){ 
      Swing runFrame = new Swing(); // creating a variable for class Swing 
      runFrame.Run(); // to run the Swing 
    } 
} 

2- мой свинг

package Abo; 

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JTextField; 

public class Swing extends JFrame { 
    public JTextField textField; 
    public JTextField textField_1; 
    public JTextField textField_2; 

    public Swing() { 
     // creating the frame 
      getContentPane().setLayout(new GridLayout(2,2,5,5)); 

      textField = new JTextField(); 
      getContentPane().add(textField); 
      textField.setColumns(10); 

      textField_1 = new JTextField(); 
      getContentPane().add(textField_1); 
      textField_1.setColumns(10); 

      textField_2 = new JTextField(); 
      getContentPane().add(textField_2); 
      textField_2.setColumns(10); 
      textField_2.setEditable(false); 

      // adding the btn from another class 
      Verb addBTN = new Verb(); 
      getContentPane().add(addBTN.BTN()); 


    } 

    public void Run(){ 
     // setting the frame 
      Swing frame = new Swing(); 
      frame.setVisible(true); 
      frame.setSize(300,400); 
      frame.setLocationRelativeTo(null); 
      frame.setResizable(false); 
      frame.setDefaultCloseOperation(EXIT_ON_CLOSE);  
    } 
} 

3 класс глагола

package Abo; 

import javax.swing.JButton; 

public class Verb extends JButton { 


// creating the btn constructor 
    public JButton BTN(){ 
     JButton btn1 = new JButton("First Button"); 
     return btn1; 
    } 
} 

спасибо заранее

+0

Где глагол удлиняет JButton? Кажется добрым бессмысленно проявлять себя от JButton и создавать еще один JButton внутри. Думаю, вам захочется взглянуть на класс Action – MadProgrammer

+0

Может быть, я сделал ошибку, используя extends, я вообще не испытываю этого, просто пытался , Я также предпочитаю создать кнопку самостоятельно, поэтому я могу удалить расширение. –

+0

Возможно, вам стоит начать, взглянув на [Как написать прослушиватель действий] (https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html), [Как использовать кнопки, флажки , и радио кнопки] (https://docs.oracle.com/javase/tutorial/uiswing/components/button.html) и для чего-то более продвинутого [Как использовать действия] (https://docs.oracle. ком/JavaSE/учебник/uiswing/разное/действие.html) – MadProgrammer

ответ

0

Wel л в классе глагола просто добавить это btn1

btn1.addActionListener(new ActionListener() { 

       public void actionPerformed(ActionEvent e) 
       { 
        //Execute when button is pressed 



       } 
      }); 
+0

Я пробовал это раньше, и это не сработало, кнопка не предпринимает никаких действий Я добавил ее в JButton BTN –

0

Я заметил, что Verb расширяет JButton, но вы выбираете, чтобы написать метод, который возвращает JButton внутри него.

Если вы хотите Verb быть JButton, который всегда называется "First Button", то я бы вместо того, чтобы изменить конструктор Verb «s.

Один из способов сделать это было бы так:

package Abo; 

import javax.swing.JButton; 

public class Verb extends JButton { 
    public Verb() { 
     super("First Button"); //super calls the constructor of the parent of this class, in this case that is JButton 
    } 
} 

Теперь, так как вы расширяете JButton, всякий раз, когда вы делаете Verb, он также будет JButton с текстом "First Button"

Теперь вам вы можете добавить свой ActionListener в Verb.

Поступая:

Verb addBTN = new Verb(); 
addBTN.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     textField_2.setText(textField.getText() + textField_1.getText()); 
    } 
}); 

Однако для того, чтобы получить доступ текстовых полей внутри ActionListener, вам нужно будет сделать их окончательным.

final textField = new JTextField(); // do this for all text fields

Кроме того, так же, как хорошая практика, если вы не планируете добавить больше функциональных возможностей, чем конструктор по умолчанию для Verb, я бы просто использовать JButton вместо того, чтобы сделать свой собственный класс.

+0

Большое вам спасибо Но тогда как я добавлю кнопку SWING? PLZ Обратите внимание, что классы не находятся в одном java-файле, каждый класс находится в отдельном java-файле –

+0

getContentPane(). Add (addBTN); – dustinroepsch

+0

Глагол теперь является подклассом JButton, поэтому все, что вы можете сделать с JButton, вы можете сделать с глаголом – dustinroepsch

 Смежные вопросы

  • Нет связанных вопросов^_^