1

現在Swingアプレットに取り組んでおり、Netbean(7.0)のデザイナで通常作成される他のコンポーネント(ボタンなど)など、他のクラス関数でカスタムAWT Canvasコンポーネント(非常に単純な拡張クラス)を参照する際に問題が発生します。 。

ここに追加したカスタムキャンバス要素は、これが適切な場所になると確信していました(特に、生成された他のすべてのコンポーネントが同じ領域に作成された後)

public void init() {
    try {
        java.awt.EventQueue.invokeAndWait(new Runnable() {
            public void run() {
                initComponents();

                CustomCanvas myCan = new CustomCanvas();
                myCan.setBounds(100, 100, 200, 200);
                getContentPane().add(myCan);
          ...

ただし、生成されたコンポーネントとは異なり、名前でアクセスすることはできず、他の手段(this.myCan)でもアクセスできないようです。以前にインスタンス化されたmyCanコンポーネントを操作するために、Swingフォームの(生成された)ボタンを処理するサンプル関数を設定しました。

private void btnManipCanvasActionPerformed(java.awt.event.ActionEvent evt) {
  //Essentially Was wanting to call something here such as myCan.getGraphics().setRect...
}

myCanにアクセスする方法を知っていますか?コンポーネントのカスタム初期化を別の領域に配置して、それらが公にアクセスできるようにする必要がありますか?

4

2 に答える 2

1

Netbeansデザイナによって作成された他のすべてのコンポーネントと同様に、キャンバスをインスタンス変数にするだけです。

private CustomCanvas myCan;

public void init() {
try {
    java.awt.EventQueue.invokeAndWait(new Runnable() {
        public void run() {
            initComponents();

            myCan = new CustomCanvas();
            myCan.setBounds(100, 100, 200, 200);
            getContentPane().add(myCan);
            // ...
于 2011-08-07T08:03:26.437 に答える
1

おそらくATWコンポーネントをSwingJComponetsと混合しているため、問題が発生したり、ペイントが不足したりする可能性があります。

OpenGLから特別なものがない場合は、AWT Canvasの代わりにJPanelを探し、 SwingですべてのあえぎをJLabelにリダイレクトします。

LayoutManagersが回避するためにどのように機能するかをお読みくださいsetBounds(int, int, int, int);

于 2011-08-07T08:08:58.807 に答える