0

私はかなり長い間、PHP やその他の Web プログラミング言語でプログラミングを行ってきましたが、Java はまったくの初心者です。また、PHP でプログラミングするときに手続き型アプローチを使用しているため、OOP もまったく初めてです。今、私は非常に基本的な Java チュートリアルに従っています。

別の「銀行口座」に表示するための次のコードがあります。

public class UseAccount extends JFrame {

public static void main(String[] args) {

    Account myAccount = new Account();
    Account yourAccount = new Account();

    myAccount.name = "Jimmy";  
    myAccount.address = "Arjeplogsvägen 1";
    myAccount.balance = 1250.70;

    yourAccount.name = "Greg Giraldo";
    yourAccount.address = "Fishermans friend's 4";
    yourAccount.balance = -5820.30;

    myAccount.display();
    System.out.println();
    yourAccount.display();
}
}

そして、ここに「アカウント」クラスがあります:

public class Account{
    String name;
    String address;
    double balance;

    void display() {
        System.out.print(name);
        System.out.print(" (");
        System.out.print(address);
        System.out.print(") has $");
        System.out.print(balance);
    }     
}

これは本当にうまくいきます。しかし、今はこの情報を JTextArea に出力したいと考えています。そこで、UseAccount クラス用に次のコードを作成しました。

import java.awt.*;
import javax.swing.*;

public class UseAccount extends JFrame {
        JTextArea output = new JTextArea();

    public UseAccount() {
        setLayout(new BorderLayout());
        add(output, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
    UseAccount frame = new UseAccount();
    frame.setTitle("Account");
    frame.setSize(500,400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    Account myAccount = new Account();
    Account yourAccount = new Account();

    myAccount.name = "Jimmy";  
    myAccount.address = "Arjeplogsvägen 1";
    myAccount.balance = 1250.70;

    yourAccount.name = "Greg Giraldo";
    yourAccount.address = "Fishermans friend's 4";
    yourAccount.balance = -5820.30;

    myAccount.display();
    System.out.println();
    yourAccount.display();
    }
}

そして、「Account」クラスに「UseAccount」クラスを拡張させ、テキストを表示するために output.append("the_text") を使用しようとしていました。しかし、これは明らかに機能しません:

public class Account extends UseAccount{
    String name;
    String address;
    double balance;

    void display() {
        output.append(name);
        output.append(" (");
        output.append(address);
        System.out.print(") has $");
        System.out.print(balance);
    }     
}

とにかく動作しないため、すべての system.out.print() を output.append に変更しませんでした。

この他のクラスから textarea("output") のテキストにアクセスして変更する方法を知りたいですか?

誰かがこの小さな問題で私を助けてくれることを願っています.

同様の質問が以前にここで尋ねられたことを知っています。そして、私の問題を解決するために、これらの質問に対する解決策を調べようとしました。しかし、他の質問のほとんどは複雑すぎて、それが何であるかを理解できませんでした. したがって、私は今、自分の質問を投稿しようとしています。

4

3 に答える 3

2

クラスはおそらく、Accountより線に沿ったものになるはずです。

public class Account extends UseAccount{
    String name;
    String address;
    double balance;

    @Override
    public String toString() {
        return name + 
          " (" +
          address +
          ") has $" + 
          balance;
    }     
}

オーバーライドtoString()することで、次のようなことが簡単にできます。

Account account = //...
System.out.println(account);
output.setText(account.toString());
于 2012-06-11T14:29:08.400 に答える
1

以前の回答を読んでいる間、私は別のアプローチについて考えていました(それほど違いはありません):

-class Account は TextArea に配置されるテキストを提供します

-フレームはそのテキストを取得し、TextArea に配置します

あなたが必要とするクラスアカウントで

public class Account {
    String name;
    String address;
    double balance;

    public String toString() {
        return name + address + balance; // This string should follow your desired format
    }     
}

そしてフレーム内:

...
output.append(account.toString())
...
于 2012-06-11T14:40:07.167 に答える