2016-05-03 12 views
0

メソッドとクラスを学習しようとしています メインクラスを実行する小さなツールと、フレームを作成するSwingクラスと、追加するボタンを作成するクラスVerbスイングと同様に実行されるアクションを行うには、ここで私の質問は、私は動詞クラスを介して実際に動作するように動作させることができます。 私は、テキストフィールドからテキストを取得し、それをtextfiled1と連結し、textfield2でその答えを表示したいとしましょう。 は、ここに私のコード別のクラスを介してボタンにアクションを追加する

の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

VerbはどこでJButtonを拡張しますか? JButtonから他のJButtonを作成するのは無意味なようですが、あなたはActionクラスを見てみたいと思うかもしれません。 – MadProgrammer

+0

私はextendを使って間違いを犯しているかもしれません。私自身もボタンを作成するのが好きなので、拡張機能を削除することができます。 –

+0

まず、[アクション・リスナーの作成方法](https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html)、[ボタンの使用方法、チェック・ボックス、およびラジオボタン](https://docs.oracle.com/javase/tutorial/uiswing/components/button.html)と、さらに高度な[操作方法](https://docs.oracle.com/)を参照してください。 com/javase/tutorial/uiswing/misc/actionを実行します。html) – MadProgrammer

答えて

0

ウェルあなたの動詞クラスのLはちょうど私がVerbJButtonを拡張されていますが、その中JButtonを返すメソッドを書くことを選択していることに気づいた

btn1.addActionListener(new ActionListener() { 

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



       } 
      }); 
+0

私は以前これを試してみましたが動作しませんでした。ボタンは何もしません。 JButtonの中に追加しました。 –

0

これはBTN1に追加します。

"First Button"と常に呼ばれるJButtonにする場合は、Verbのコンストラクタを変更します。あなたがVerbを作るたびに、JButtonを拡張しているので、それはまた、今、あなたのテキスト"First Button"

JButtonになります今

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 
    } 
} 

:それをする

一つの方法は、次のようになりますあなたのActionListenerVerbに直接加えることができます。これにより

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はクラスが1つのJavaファイルにないことに注意してください。すべてのクラスは別々のJavaファイルにあります。 –

+0

getContentPane()。add(addBTN); – dustinroepsch

+0

動詞は現在JButtonのサブクラスなので、JButtonでできることはすべてVerbで行うことができます – dustinroepsch

関連する問題