Закрепление размеров JPanel на форме JFrame - Java
Формулировка задачи:
имеется форма с компонентами на базе JFrame
iПри запуске приложения форма имеет вид (на первой картинке)
При изменении размеров формы меняется размер главного окна формы (на второй картинке)
Как при изменении размеров формы ограничить изменение размеров главного окна до жестко установленных размеров? Или может быть как вообще запретить уменьшение размеров формы? Разрешить только изменение формы в пропорции к исходной и разворот на весь экран.
mport com.jogamp.opengl.awt.GLCanvas; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; public class JavaFormTest extends JFrame{ //---------------------------------------------------------------------- // создание объектов private JButton stop = new JButton("Stop"); private JButton start = new JButton("Start"); private JTextArea input = new JTextArea("input"); private JScrollPane scrollPaneInput = new JScrollPane(input); private JComboBox adapterList = new JComboBox(); private GLCanvas glcanvas = new GLCanvas(); private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel(); private JPanel panel3 = new JPanel(); // конструктор public JavaFormTest(){ // инициализация компонентов initComponents(); } // метод инициализации компонентов формы private void initComponents(){ // положение на экране setBounds(15,30,800,600); // размер формы setSize(830, 600); // контейнер для размещения компонентов формы Container container = getContentPane(); // минимальный размер контейнера container.setMinimumSize(new Dimension(830, 600)); // закрытие формы setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); input.setColumns(20); input.setRows(10); input.setLayout(new BorderLayout()); input.setSize(20, 20); panel1.setLayout(new BoxLayout(panel1,0)); panel1.setBackground(Color.DARK_GRAY); panel1.setAlignmentX(JComponent.CENTER_ALIGNMENT); panel1.setAlignmentY(JComponent.CENTER_ALIGNMENT); panel1.add(start); panel1.add(stop); panel1.add(adapterList); panel1.setMinimumSize(new Dimension(100, 100)); panel2.setBorder(new CompoundBorder(new EmptyBorder(5, 5, 5, 5), new TitledBorder("Graphic"))); panel2.setLayout(new BorderLayout()); panel2.add(glcanvas); panel3.add(BorderLayout.NORTH, input); panel3.setBorder(new CompoundBorder(new EmptyBorder(5, 5, 5, 5), new TitledBorder("Control"))); start.setMargin(new Insets(10,10,10,10)); adapterList.setBounds(10,25,300,20); // размещение панелей container.add(BorderLayout.CENTER, panel2); container.add(BorderLayout.EAST, panel3); container.add(BorderLayout.SOUTH,panel1); } //---------------------------------------------------------------------- // main public static void main(String[] args) { JavaFormTest graphic = new JavaFormTest(); graphic.setResizable(true); graphic.setVisible(true); } }
Решение задачи: «Закрепление размеров JPanel на форме JFrame»
textual
Листинг программы
... panel2.setBorder(new CompoundBorder(new EmptyBorder(5, 5, 5, 5), new TitledBorder("Graphic"))); panel2.setLayout(new BorderLayout()); panel2.setMinimumSize(new Dimension(300, 300)); panel2.add(glcanvas); ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д