我正在编写一段 Java 代码来显示类(class)学生取得的成绩。我有一个小问题。我想使用两个 slider ,一个用于调整文本(输出)字体大小,另一个 slider 用于调整字母之间的间距。例如,当我在标有 #of Grade As 的 JLabel 框中输入数字“5”,然后按下“将输出显示为字母字符串”按钮时,我得到的结果是:“Grade As : AAAAA。 ”我想做的(如上所述)是调整字母 A 的大小,并调整连续字母 As 之间的间距。有人可以告诉我该怎么做吗?我当然知道我必须设置一个 JSlider,但是我到底该怎么做呢?我的部分代码如下:
if ( e.getSource() == displayChartButton ) {
checkAndRecordData();
Graphics g = chartPanel.getGraphics();
g.setColor(Color.white);
g.fillRect(20,20,410,52);
g.setColor(Color.black);
g.drawRect(20,20,410,52);
g.setColor( Color.black );
g.drawString( "Grade As: " + gradeAs, chartLeftXA, chartTopYA );
}
if (e.getSource() == displayLongString) {
Graphics g = chartPanel.getGraphics();
g.setColor(Color.white);
g.fillRect(20,20,410,52);
g.setColor(Color.black);
g.drawRect(20,20,410,52);
g.setColor( Color.black );
g.drawString( "Grade As: " + longStringA, 100, 50 );
}
private void checkAndRecordData() {
gradeAs = tempAs;
longStringA = "";
String gradeLetterA = "A";
for (int i=0; i<tempAs; i++)
longStringA += gradeLetterA;
}
public void stateChanged(ChangeEvent event) {
int size = slider.getValue();
}
当我到达最后一行 int size = slider.getValue() 时,我不知道该怎么做。记住,我有两件事要做。一是调整字母的大小,二是调整字母之间的间距,因此我需要两个 slider 。有人可以帮忙吗?
最佳答案
您可以通过子组件的递归轻松完成
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(), f.getStyle(), f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
您甚至可以为子组件设置自己的字体或字体大小 通过获取组件的名称
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(), f.getStyle(), f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
if(child.getName().equals("myComponentName")){
//set font to the component
}else{
changeFont(child, fontSize);
}
}
}
}
并从事件中调用此方法,就像这里我发布的那样,它将如何随着 slider 值的变化而改变字体大小 其中 sldValue 是我的全局变量,用于存储旧的 slider 值
if (!((JSlider) evt.getSource()).getValueIsAdjusting()) {
changeFont(this, sldFontSet.getValue() - sldValue);
sldValue = sldFontSet.getValue();
}
对间距感到抱歉,我正在努力
关于java - 如何使用 slider 调整成绩字母的字体大小和间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617612/