我使用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);
}
}
答案 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
,但可以添加Panel
或JPanel
之类的容器它。 null
布局的废话)。答案 1 :(得分:-1)
如果要使用绝对定位,则不需要使用布局管理器:
setLayout(null);
test = new Label("test");
add(test);
test.setLocation(10, 10);
test.setSize(test.getPreferredSize());