如何更改 "panel.add(new JLabel("")); 中 JLabel 的字体大小

Aar*_*ard 0 java user-interface swing jlabel

我知道如何以正常方式更改 JLabel 的字体大小

exampleLabel.setFont(new Font("", Font.PLAIN, 20));
Run Code Online (Sandbox Code Playgroud)

但是我想看看当您以简单的方式将 JLabel 添加到面板时是否有办法做到这一点。像这样..

examplePanel.add(new JLabel("this is an example"));
Run Code Online (Sandbox Code Playgroud)

我将如何更改后者的字体大小,因为 JLabel 没有名称?

我尝试在 JPanel 上设置字体,但它不起作用。

examplePanel.setFont(.......);
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助将不胜感激。

Rub*_*Ric 5

这是一种访问 a 的奇怪方式,JLabel但这可能有效......

Component[] components = examplePanel.getComponents();

for (Component singleComponent : components) {
   if (singleComponent instanceof JLabel) {
       JLabel label = (JLabel) singleComponent;

       if ("this is an example".equals(label.getText()) {
              label.setFont(new Font("", Font.PLAIN, 20));
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

另一种方法,为那些JLabels你想改变的人创建一个新的类。

public class JMyFontLabel extends JLabel {
  boolean applyFontChange = false;

  public JMyFontLabel(String text, boolean applyFontChange) {
         super(text);
         this.applyFontChange = applyFontChange;
  }

  // get / set methods for applyFontChange.
} 

// Method to apply font
public void setMyFont(JPanel examplePanel, Font myFont) {
   Component[] components = examplePanel.getComponents();

   for (Component singleComponent : components) {

   if (singleComponent instanceof JMyFontLabel) {
       JMyFontLabel label = (JMyFontLabel) singleComponent;

       if (label.isApplyFontChange()) {
          label.setFont(myFont);
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

在标签创建时,设置 applyFontChange

   examplePanel.add(new JMyFontLabel("Name", true));
Run Code Online (Sandbox Code Playgroud)