0

これは、パッケージ/インポートテストのようなものです。... / javaf/test.javaにあるベースフォルダから始めます。

私の目標は、サブカテゴリを作成し、ボタンが必要なときにtest.javaにインポートできるボタンを使用してクラスを作成することです。私はそれを正しく行ったように感じます。ボタンは今のところ何もしていないことを知っていますが、すべてを機能させ、その後コードを拡張したいと思います。だからここに行く-これはtest.javaです

import paket.*;  // importing classes from subcategory paket!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class test {

    public test() {
        JFrame myFrame;
        JPanel myPanel;
        myFrame = new JFrame("Hello FramWorld");
        myPanel = new JPanel();

        // Here I want to add the object created in paket/myButts.java
        // The problem is how to make these two lines work.
        myButts myButton = new myButts();
        myPanel.add(myButton);


        myFrame.setVisible(true);
        myFrame.getContentPane().add(myPanel, BorderLayout.CENTER);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.pack(); 
    }

    public static void main(String args[]) {
        new test();
    }
}

そして、これが私の... / javaf / packet / myButts.java

package paket; // Here is the package function (ought to work like a link)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// This class should only create a button.

public class myButts {  
    public myButts() {
        JButton myButt = new JButton();
    }
}

myButts.javaをエラーなしでコンパイルしました。しかし、test.javaをコンパイルすると、次のエラーが発生します。

test.java:19:シンボルシンボルが見つかりません:メソッドadd(paket.myButts)場所:クラスjavax.swing.JPanel myPanel.add(myButton);

読んでくれてありがとう、Z

4

2 に答える 2

1

私はあなたが欲しいと思います:

public class myButts extends JButton {  

}

クラスのインスタンスをSwingコントロールに直接追加する場合は、SwingまたはAWTタイプ(この場合はJButton)を拡張する必要があります。

以前は、コンストラクターでローカルJButtonを作成しましたが、これは使用されておらず、他の場所ではアクセスできませんでした。

注意として、Javaスタイルガイド、特に命名規則に従うことをお勧めします。MyButtonのように、クラスは大文字と小文字を混在させることをお勧めします。

于 2010-04-09T23:24:44.703 に答える
0

エラーは次のとおりです。

test.java:19: cannot find symbol symbol : method add(paket.myButts) location: class javax.swing.JPanel myPanel.add(myButton);

addこれは、クラス JPanelにパラメータを取るメソッドがないことを意味しpaket.myButtsます。JPanel のドキュメントを見て、どのようなaddメソッドがあるかを見てみましょう。addContainer から継承されたメソッドは 5つと、Component から継承されたメソッドが 1 つあります。このメソッドは、ほとんどのメソッドと同様に、Component オブジェクトを渡す必要があります。これには、PopupMenu オブジェクトを渡す必要があります。

したがって、あなたの paket.myButts オブジェクトは Component または PopupMenu ではなく、そうである必要があるようです。myButts を Component に拡張したくなるかもしれません。したがって、コンポーネントのドキュメントを見て、何が得られるかを確認してください。すでに提供されているいくつかのサブクラスがあることに注意してください。

ボタン、キャンバス、チェックボックス、選択肢、コンテナ、ラベル、リスト、スクロールバー、テキストコンポーネント

実際にはボタンが必要なので、myButts が Button を拡張するのは理にかなっていると思うかもしれません。それは機能し、awt.Button を取得します。ただし、さらに詳しく調べると、Container のサブクラスの一部は、JButton などのスイングクラスです。これらのスイングクラスを使用することをお勧めします。

これを行うと、コンストラクターは次の形式を取る必要があります。

public class myButts extends JButton {  
  public myButts() {
    super();
    // here put any myButts-specific construction code, such as:
    setText("Press me!");
  }
}

より一般的なスイング コンポーネントの使用方法については、優れたスイング チュートリアルを強くお勧めします。

于 2010-04-09T23:50:17.000 に答える