Вы должны принять во внимание макеты здесь. ContentPane JApplet по умолчанию использует BorderLayout, и если вы добавите компонент в BorderLayout без второго параметра, сообщающего ему, куда его добавить, он будет добавлен BorderLayout.CENTER и заполнит как можно больше места. Ключ к решению этой проблемы - узнать как можно больше о менеджерах компоновки и использовать эту информацию в своих интересах. Вы можете найти эту информацию здесь: Визуальное руководство для менеджеров по макету .
Обратите внимание, что часто мы вкладываем JPanels, каждый из которых использует свой собственный менеджер макетов, дружественный к кодировщику, для создания сложных, но простых в управлении макетов.
например.,
import java.awt.*;
import javax.swing.*;
public class Applet extends JApplet {
private JButton button1;
private JTextField textBox1;
@Override
public void init() {
button1 = new JButton("Calculate");
textBox1 = new JTextField("number");
textBox1.setFont(new Font("Courier", Font.PLAIN, 12));
JPanel myPanel = new JPanel(); // JPanel uses FlowLayout by default
myPanel.add(new JLabel("Enter a number: "));
myPanel.add(textBox1);
myPanel.add(button1);
myPanel.setBackground(Color.gray);
getContentPane().add(myPanel, BorderLayout.CENTER);
}
}
Обратите внимание, что setSize обычно игнорируется большинством менеджеров по расположению. Вместо этого предпочтение обычно отдается предпочтению, но этого следует избегать, так как вместо этого вы захотите, чтобы сами компоненты установили свой предпочтительный размер на основе их содержимого или других свойств (таких как строки и столбцы для JTextArea или столбцы для JTextField или текст String. для JLabel).