I have a JFrame with BorderLayout : JTextArea in NORTH and JButton in SOUTH . I pack() at the beginning.
My code resizes the font for the text area. How to force a dialog box and its components to reconfigure themselves?
So far I have tried several combinations:
- more
pack() repaint()revalidate()
It doesn't seem to help.
Is there a guaranteed brute force approach? What is the correct way to achieve this result?
UPDATE:
When creating SCCE (see below), I found two errors in my source code and fixed them. Now the frame becomes more convenient.
I still have a question if this is the correct way.
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class MyFrame extends JFrame implements ActionListener{ private JTextArea txt; private JButton bis; private JFrame frame; int size = 10; private void BuildMainGUI() { txt = new JTextArea("This is just a line of text"); bis = new JButton("Increase size"); JPanel p1 = new JPanel(); bis.addActionListener(this); BorderLayout bl = new BorderLayout(); p1.setLayout(bl); p1.add(txt, BorderLayout.NORTH); p1.add(bis, BorderLayout.SOUTH); frame = new JFrame(); frame.setContentPane(p1); frame.setVisible(true); frame.pack(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { size += 2; Font newFont = new Font("Courier", Font.PLAIN, size); txt.setFont(newFont); frame.revalidate(); frame.pack(); } public static void main(String[] args) { MyFrame myGUI = new MyFrame(); myGUI.BuildMainGUI(); } }
source share