切换选项卡后,小程序组件转到默认布局

时间:2012-12-13 21:31:13

标签: java applet

我使用setLocation(x,y)将组件放在基于AWT的applet中,但是当我切换标签时,组件的位置会回到默认布局。

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

}

2 个答案:

答案 0 :(得分: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()Applet等顶级容器中的Frame,但可以添加PanelJPanel之类的容器它。
  • 使用布局 (而不是null布局的废话)。

答案 1 :(得分:-1)

如果要使用绝对定位,则不需要使用布局管理器:

setLayout(null);
test = new Label("test");
add(test);
test.setLocation(10, 10);
test.setSize(test.getPreferredSize());