1

AWT ベースのアプレットにコンポーネントを配置するために setLocation(x, y) を使用しましたが、タブを切り替えるとコンポーネントの位置がデフォルトのレイアウトに戻ります。

import java.applet.*;
import java.awt.*;

public class AppletEx extends Applet {

  Label test;

  public void init() {

      test = new Label("test");
      add(test);   

  }

  public void start() {
  }

  public void stop() {
  }

  public void destroy() {
  }

  public void paint() {
      test.setLocation(10, 10);
  }

}
4

2 に答える 2

1
import java.awt.BorderLayout;
// it is the 3rd millennium, time to use Swing
import javax.swing.*;
import javax.swing.border.EmptyBorder;

/** <applet code='AppletEx' width='120' height='50'></applet> */
public class AppletEx extends JApplet {

  JLabel test;

  public void init() {
      test = new JLabel("test");
      // a border can be used for component padding
      test.setBorder(new EmptyBorder(10,10,10,10));
      // default layout of Applet is FlowLayout,
      // while JApplet is BorderLayout
      add(test, BorderLayout.PAGE_START);
  }
}

その他のヒント。

  • 内部のコンポーネントを作成または変更しようとしないでくださいpaint()。ループが発生します。
  • paint()カスタム ペインティングを行う場合を除き、オーバーライドしないでください。
  • またはのようなpaint()最上位のコンテナーではオーバーライドしないでください。 AppletFramePanelJPanel
  • レイアウトを使用します (ナンセンスなレイアウトとは対照的にnull)。
于 2012-12-14T01:49:46.593 に答える
-1

絶対配置を使用する場合は、レイアウト マネージャーを使用する必要はありません。

setLayout(null);
test = new Label("test");
add(test);
test.setLocation(10, 10);
test.setSize(test.getPreferredSize());
于 2012-12-13T21:39:16.217 に答える