Java JButton不需要的文本大小更改

Java JButton不需要的文本大小更改,java,swing,jbutton,Java,Swing,Jbutton,我有JButtons,我可以在需要时设置文本,有时文本会在按钮上改变大小,或者变大或变小。我在下面添加了一些例子 如果我将鼠标滚动到按钮上,文本将返回到设置的大小。2000年和2013年是设定的规模 按钮的创建和设置如下所示: //create buttons Buttons.add( Btn1 = newImageButton(Picture.Button.getImageIcon(), "Btn1", Color.WHITE)); x = (int)(0.5f + (0) * getS

我有JButtons,我可以在需要时设置文本,有时文本会在按钮上改变大小,或者变大或变小。我在下面添加了一些例子

如果我将鼠标滚动到按钮上,文本将返回到设置的大小。2000年和2013年是设定的规模

按钮的创建和设置如下所示:

//create buttons
 Buttons.add( Btn1 = newImageButton(Picture.Button.getImageIcon(), "Btn1", Color.WHITE));
 x = (int)(0.5f + (0) * getScreenWorking().width);
 y = (int)(0.5f + (yBtnStep + yBtnMargin) * getScreenWorking().height);            
 buildConstraintsFF(Btn1, x, y, -1);

  Btn1.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
        ButtonAction(evt);
     }
  });
  Btn1.setVisible(false);

 Buttons.add( Btn2 = newImageButton(Picture.Button.getImageIcon(), "Btn2", Color.WHITE));
 x = (int)(0.5f + (xBtnStep) * getScreenWorking().width);
 y = (int)(0.5f + (yBtnStep + yBtnMargin) * getScreenWorking().height);            
 buildConstraintsFF(Btn2, x, y, -1);

  Btn2.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
        ButtonAction(evt);
     }
  });
  Btn2.setVisible(false);


   public JButton newImageButton(ImageIcon ii, String str, Color col) {
      JButton btn = new JButton(ii);
      Dimension dim = new Dimension(ii.getIconWidth(),
      ii.getIconHeight());
      btn.setPreferredSize(dim);
      btn.setMaximumSize(dim);
      btn.setMinimumSize(dim);
      btn.setText(str);
      btn.setForeground(col);
      btn.setHorizontalTextPosition(SwingConstants.CENTER);
      btn.setFont(new Font("GothamNarrow-Book", Font.BOLD, 24));

      btn.setBorderPainted(false); 
      btn.setContentAreaFilled(false); 
      btn.setFocusPainted(false); 
      btn.setOpaque(false);
      return(btn);
   }

   //Button text set from list and made visible to size of list
   for(int i=0; i < List.size(); i++){
         btn1 = Buttons.get(i);
         setBtnText(List.get(i), i);
         btn1.setVisible(true);
    }

   //set button text
   public void setBtnText(String str, int i){
     JButton btn = autosButtons.get(i);
     String str2 = "<html><center><font size=6>" + str + "</font></center></html>";
     btn.setText(str2);
     btn.setMargin(new Insets(20,0,20,0));
     btn.setVerticalAlignment(SwingConstants.CENTER);
     btn.setHorizontalAlignment(SwingConstants.CENTER);
     btn.repaint();
   }

   private JButton Btn1;
   private JButton Btn2;
   public ArrayList<JButton> Buttons = new ArrayList<JButton>();
   private List<String> List = new ArrayList<String>();
//创建按钮
添加(Btn1=newImageButton(Picture.Button.getImageIcon(),“Btn1”,Color.WHITE));
x=(int)(0.5f+(0)*getScreenWorking().width);
y=(int)(0.5f+(yBtnStep+yBtnMargin)*getScreenWorking().height);
buildConstraintsFF(Btn1,x,y,-1);
Btn1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件evt){
按钮操作(evt);
}
});
Btn1.setVisible(假);
添加(Btn2=newImageButton(Picture.Button.getImageIcon(),“Btn2”,Color.WHITE));
x=(int)(0.5f+(xBtnStep)*getScreenWorking().width);
y=(int)(0.5f+(yBtnStep+yBtnMargin)*getScreenWorking().height);
buildConstraintsFF(Btn2,x,y,-1);
Btn2.addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件evt){
按钮操作(evt);
}
});
Btn2.setVisible(假);
公共JButton newImageButton(ImageIcon ii,字符串str,颜色col){
JButton btn=新JButton(ii);
尺寸标注=新尺寸标注(ii.getIconWidth(),
ii.getIconHeight());
btn.setPreferredSize(尺寸);
btn.设置最大尺寸(dim);
btn.设置最小尺寸(dim);
btn.setText(str);
btn.设置前景(col);
btn.setHorizontalTextPosition(SwingConstants.CENTER);
btn.setFont(新字体(“GothamRown Book”,Font.BOLD,24));
btn.1(假);
btn.setContentAreaFilled(假);
btn.SetFocuspaint(假);
btn.setOpaque(假);
返回(btn);
}
//从列表中设置的按钮文本,并使其对列表大小可见
对于(int i=0;i
有人能给我解释一下为什么文字会像图片一样变大吗


这是文本设置问题还是Swing问题?

要获得更好的帮助,请尽快发布一个适当的帖子,我们可以复制粘贴,并查看与您相同的问题。避免添加第二个字体大小,从而混淆视听。对齐设置属于该按钮。当图像似乎更多时,为什么要混合图像和文本?您在多个位置设置了不同的字体大小,因此这是可疑的。此外,如果约束和对齐数学发生任何变化,可能会压缩文本空间,并可能导致隐式字体大小重新调整。