Как увеличить размер формы / панели JAVA

Я начну с объяснения того, что должна делать программа ниже. Хорошо, когда вы нажимаете на кнопку, текст расширяется вместе с текстом, постоянно увеличивая ширину и / или высоту. Таким образом, что весь текст виден все время.

Проблема в том, что когда увеличенная кнопка не увеличивает область отображения, так что несколько щелчков мыши начинают скрываться. Сама программа должна увеличить область отображения, чтобы все было видно все время.

Экран публикует, как это выглядит и как должно быть.

Изображение требований

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

public class Main {
  public static void main(String ... args) {

        JFrame frame = new JFrame("JFrame");
        final GridLayout gd = new GridLayout(0,1);
        frame.setLayout(gd);

        final JPanel panel1 = new JPanel();
        panel1.setLayout(new FlowLayout());
        JPanel panel2 = new JPanel();
        panel2.setLayout(new FlowLayout());

        final JButton btn1 = new JButton("Button 1");
        final JButton btn2 = new JButton("Button 2");

        btn1.addActionListener( new ActionListener() {
            int fontSize = 14;
            public void actionPerformed(ActionEvent e){
                Font font = new Font("Arial", Font.PLAIN, fontSize);
                btn1.setFont(font);
                fontSize++;     
            }
        });

        btn2.addActionListener( new ActionListener() {
            int fontSize = 14;
            public void actionPerformed(ActionEvent e){
                Font font = new Font("Arial", Font.PLAIN, fontSize);
                btn2.setFont(font);
                fontSize++;
            }
        });


        panel1.add(btn1);
        panel2.add(btn2);
        frame.add(panel1);
        frame.add(panel2);


        //frame.setPreferredSize(new Dimension(200, 100));
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.pack();       
        frame.setLocationRelativeTo(null);
        frame.setVisible(true); 

  }
}

1 ответ

Решение

Проблема в том, что когда увеличенная кнопка не увеличивает область отображения, так что несколько щелчков мыши начинают скрываться. Сама программа должна увеличить область отображения, чтобы все было видно все время.

добавить строку кода frame.pack(); после Font увеличивается / уменьшается, то все JComponents в JFrame будет ретранслироваться

Другие вопросы по тегам