Игнорировать setLocation()
/ setBounds()
& , особенно setLayout(null)
. Оставь всякую надежду (и последние остатки здравомыслия), вы, кто входит туда.
Установка расположения компонентов с помощью менеджеров по расположению.
Для определения размеров компонентов обычно достаточно предоставить соответствующие аргументы в конструкторе (например, new JTextArea(rows, columns)
) или, в некоторых случаях, используя ограничения макета (например, BorderLayout.CENTER
).
Для разрыва между компонентами посмотрите как пакет javax.swing.border
, так и аргументы конструктора менеджеров компоновки или, в некоторых случаях, ограничения макета (например, GridBagLayout
& GridBagConstraints
).
Пример:
//<applet code='Apletas' width='600' height='400'></applet>
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class Apletas extends JApplet {
private JTextField inputLine;
public Apletas()
{
inputLine = new JTextField(20);
JPanel mainGui = new JPanel(new BorderLayout(20,20));
mainGui.setBorder(new EmptyBorder(80,80,80,80));
mainGui.add(inputLine, BorderLayout.NORTH);
mainGui.add(new JScrollPane(new JTextArea(20,10)), BorderLayout.CENTER);
JTree tree = new JTree();
tree.expandRow(2);
mainGui.add(new JScrollPane(tree), BorderLayout.WEST);
setContentPane(mainGui);
validate();
}
}
Для компиляции и запуска
prompt> javac Apletas.java
prompt> appletviewer Apletas.java
См. Также
Размещение компонентов внутри контейнера & Как использовать границы в руководстве по Java.