Tag: 抽绳

为什么重新粉刷需要花费这么多时间?

我有类似的东西(现在时间显示正确)。 我已将KeyListener添加到这些JPanel所在的JFrame中。 当我按 – >(右键)时,我希望时间增加1,但它确实很慢(比如3秒等待,甚至更长)。 程序中的算法不是故障(没有GUI检查,它们很快)。 有没有办法加快反应速度 – >按键 – >改变时间。 图像是png所以它应该很快。 我每次想要刷新时都会调用aktualizuj()。 PS:时间在屏幕的左侧:14:28 import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; public class InfoLiniaPanel extends JPanel { Linia linia; Dimension d; int nrPrzystanku; public InfoLiniaPanel(Linia linia) { super(); this.linia = linia; nrPrzystanku […]

Java – 如何在矩形中以视觉方式居中特定字符串(而不仅仅是字体)

我试图在JPanel上以视觉方式居中任意用户提供的字符串。 我已经在SO上阅读了几十个其他类似的问题和答案,但没有发现任何直接解决我遇到的问题。 在下面的代码示例中,getWidth()和getHeight()引用了我放置文本字符串的JPanel的宽度和高度。 我发现TextLayout.getBounds()非常好地告诉我包含文本的边界矩形的大小。 因此,我认为通过计算文本边界矩形左下角的JPanel上的x和y位置,将文本矩形居中在JPanel矩形中会相对简单: FontRenderContext context = g2d.getFontRenderContext(); messageTextFont = new Font(“Arial”, Font.BOLD, fontSize); TextLayout txt = new TextLayout(messageText, messageTextFont, context); Rectangle2D bounds = txt.getBounds(); xString = (int)((getWidth() – (int)bounds.getWidth()) / 2 ); yString = (int)((getHeight()/2) + (int)(bounds.getHeight()/2)); g2d.setFont(messageTextFont); g2d.setColor(rxColor); g2d.drawString(messageText, xString, yString); 这适用于全部大写的字符串。 但是,当我开始使用带有下行字符的小写字母(如g,p,y)进行测试时,文本不再居中。 小写字母上的下划线(延伸到字体基线下方的部分)在JPanel上绘制得太低,使文本看起来居中。 那时我发现(感谢SO)传递给drawString()的y参数指定了绘制文本的基线 ,而不是下限。 因此,再次在SO的帮助下,我意识到我需要通过字符串中下划线的长度来调整文本的位置: …. TextLayout txt = new […]

矩形中的Java中心文本

我使用drawString()方法使用Graphics绘制字符串,但我想将文本居中放在矩形中。 我该怎么做?