Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to automatically increase or decease size of JButton text based on the size of JButton?
    primarykey
    data
    text
    <p>I am trying to increase/decrease the font size of JButton text automatically (if JButton increases/stretches its text will also increase, if JButton decreases its text will also decrease). The default font of the JButtons will be Sans-Serif size 20 and it can never decrease below 20 (it can be 21, 30, 40 or anything above or equal to 20 but never anything below 20). I have a JPanel, called MenuJPanel, it uses the GridLayout to add 5 JButtons which will increase/decrease in size as the JPanel increases/deceases. I chose the GridLayout as it seems to be the best layout for this purpose, am I wrong? I also added a componentResized to the MenuJPanel. Below you can see my code which partially works.</p> <p><img src="https://i.stack.imgur.com/v2M3H.png" alt="enter image description here"></p> <pre><code>public class MenuJPanel extends JPanel { private JButton resizeBtn1; private JButton resizeBtn2; private JButton resizeBtn3; private JButton resizeBtn4; private JButton resizeBtn5; public MenuJPanel() { initComponents(); this.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { Font btnFont = resizeBtn1.getFont(); String btnText = resizeBtn1.getText(); int stringWidth = resizeBtn1.getFontMetrics(btnFont).stringWidth(btnText); int componentWidth = resizeBtn1.getWidth(); // Find out how much the font can grow in width. double widthRatio = (double) componentWidth / (double) stringWidth; int newFontSize = (int) (btnFont.getSize() * widthRatio); int componentHeight = resizeBtn1.getHeight(); // Pick a new font size so it will not be larger than the height of label. int fontSizeToUse = Math.min(newFontSize, componentHeight); // Set the label's font size to the newly determined size. resizeBtn1.setFont(new Font(btnFont.getName(), Font.BOLD, fontSizeToUse)); } }); } private void initComponents() { resizeBtn1 = new javax.swing.JButton(); resizeBtn2 = new javax.swing.JButton(); resizeBtn3 = new javax.swing.JButton(); resizeBtn4 = new javax.swing.JButton(); resizeBtn5 = new javax.swing.JButton(); setLayout(new java.awt.GridLayout(5, 0)); resizeBtn1.setText("Text to resize 1"); add(resizeBtn1); resizeBtn2.setText("Text to resize 2"); add(resizeBtn2); resizeBtn3.setText("Text to resize 3"); add(resizeBtn3); resizeBtn4.setText("Text to resize 4"); add(resizeBtn4); resizeBtn5.setText("Text to resize 5"); add(resizeBtn5); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload