我使用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);
}
}发布于 2012-12-14 09:49:47
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(),除非在顶级容器(如Applet或Frame )中执行自定义painting.paint(),但在可以添加到其中的<代码>D12或<代码>D13中。null布局的无稽之谈相反)。发布于 2012-12-14 05:39:16
如果你想使用绝对定位,你不需要使用布局管理器:
setLayout(null);
test = new Label("test");
add(test);
test.setLocation(10, 10);
test.setSize(test.getPreferredSize());https://stackoverflow.com/questions/13868834
复制相似问题