У меня проблемы с пониманием поведения моего приложения. Я хочу создать простое окно (1000x700px), разделенное на две части (ширина 250px и 750px соответственно). Я попробовал следующий код:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Example extends JFrame
{
private static final long serialVersionUID = 1L;
public Example()
{
this.setSize(1000, 700);
this.setTitle("Example");
this.setResizable(false);
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
JPanel navigation_panel_wrap = new JPanel();
JPanel content_panel_wrap = new JPanel();
navigation_panel_wrap.setPreferredSize(new Dimension(250, 700));
content_panel_wrap.setPreferredSize(new Dimension(750, 700));
content_panel_wrap.setBackground(Color.green);
navigation_panel_wrap.setBackground(Color.red);
this.getContentPane().add(navigation_panel_wrap);
this.getContentPane().add(content_panel_wrap);
}
public static void main(String[] args)
{
Example example = new Example();
example.setVisible(true);
}
}
Как видите, я вручную установил диспетчер компоновки для JFrame (FlowLayout вместо BorderLayout с нулевыми горизонтальными и вертикальными промежутками). Конечно, я могу просто использовать BorderLayout, а затем использовать метод add() с параметрами BorderLayout.EAST и BorderLayout.WEST, но я хочу понять, что не так с FlowLayout. Когда я запускаю свое приложение, я получаю следующее (без зеленого JPanel): 
Если я уменьшу ширину, например, content_panel_wrap и сделаю ее 744px вместо 750px, все будет работать правильно.
Так вот вопрос - что это за странные 6 пикселей? Я не уверен, что это значение является постоянным для всех операционных систем, поэтому я хочу понять его происхождение.
