String text = lnum.getText();
System.out.println("String Text = "+text);//DEBUG
Font originalFont = (Font)lnum.getClientProperty("originalfont"); // Get the original Font from client properties
if (originalFont == null) { // First time we call it: add it
originalFont = lnum.getFont();
lnum.putClientProperty("originalfont", originalFont);
}
int stringWidth = lnum.getFontMetrics(originalFont).stringWidth(text);
int componentWidth = lnum.getWidth();
stringWidth = stringWidth + 25; //DEBUG TRY
if (stringWidth > componentWidth) { // Resize only if needed
// Find out how much the font can shrink in width.
double widthRatio = (double)componentWidth / (double)stringWidth;
int newFontSize = (int)Math.floor(originalFont.getSize() * widthRatio); // Keep the minimum size
// Set the label's font size to the newly determined size.
lnum.setFont(new Font(originalFont.getName(), originalFont.getStyle(), newFontSize));
}else{
lnum.setFont(originalFont); // Text fits, do not change font size
System.out.println("I didnt change it hahaha");//DEBUG
}
lnum.setText(text);
线宽=线宽+25;//调试尝试
我不得不添加这段代码,这样它就增加了它得到的长度。这是我添加的代码,只是为了暂时解决问题。我想要一个永久的解决办法。
根据对你提到的问题的回答改编:
void setTextFit(JLabel label, String text) {
Font originalFont = (Font)label.getClientProperty("originalfont"); // Get the original Font from client properties
if (originalFont == null) { // First time we call it: add it
originalFont = label.getFont();
label.putClientProperty("originalfont", originalFont);
}
int stringWidth = label.getFontMetrics(originalFont).stringWidth(text);
int componentWidth = label.getWidth();
if (stringWidth > componentWidth) { // Resize only if needed
// Find out how much the font can shrink in width.
double widthRatio = (double)componentWidth / (double)stringWidth;
int newFontSize = (int)Math.floor(originalFont.getSize() * widthRatio); // Keep the minimum size
// Set the label's font size to the newly determined size.
label.setFont(new Font(originalFont.getName(), originalFont.getStyle(), newFontSize));
} else
label.setFont(originalFont); // Text fits, do not change font size
label.setText(text);
}
当您将显示一个合适的数字时,您应该将字体重置回原来的字体(请参见else
部分)。
编辑:如果您不能/不想保留对原始字体的引用,可以将其保存为“客户端属性”(参见第一行)。
对不起,我不能上传图片
我对Java真的很陌生,我想做一个简单的GUI,上面有一个按钮,当你点击它的时候就会有价值,我在YouTube上学习了这个教程。一切都很顺利。但有一点没有,即文本的结尾从一个数字()变为。手动调整窗口的大小会使数字返回,所以我尝试在它启动时在代码中调整字体、窗口、按钮和标签的大小,这确实起作用,但仍然会遇到同样的问题。 这是我的按钮代码: ...我相信它会称之为: 我在其他问题上试过一些其他的解决
问题内容: 我正在尝试从目录加载图像并将其作为图标放置在中。但是,当图像尺寸很大时,就不能完全放入标签中。我尝试调整图像的大小以适合标签,但无法正常工作。我可以知道我要去哪里了吗? 问题答案: BufferedImage img = ImageIO.read(…); Image scaled = img.getScaledInstance(500, 500, Image.SCALE_SMOOTH)
问题内容: 我正在尝试使图片适合JLabel。我希望将图片尺寸减小到更适合我的Swing JPanel。 我尝试使用setPreferredSize,但是它不起作用。 我想知道是否有一种简单的方法?我应该为此缩放图像吗? 问题答案: 大纲 这是要遵循的步骤。 将图片读取为BufferedImage。 将BufferedImage的大小调整为另一个JLabel大小的BufferedImage。 从调
我有HTML页面,其中我正在使用javascript语法更改字体大小 当我尝试更改字体大小时,HTML会根据字体的增加/减少上下移动文本,用户无法保持更改字体大小之前的相同文本。 我怎样才能让用户留在原来的地方?
我知道如何以正常的方式改变JLabel的字体大小 但是我想看看当您将JLabel添加到面板时是否有一种方法,即简单的方法。像这样.. 当JLabel没有名称时,我如何更改后者的字体大小? 我尝试在JPanel上设置字体,但它不起作用。 对此,我们将不胜感激。