for循环中的值不变

时间:2017-07-30 09:04:52

标签: java

我目前正在开发一个程序来显示字体大小从6到20的短语。在创建这些短语的循环中,循环不会改变不同短语的y值。它们似乎是在彼此之上创建的。这是代码。

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class JFontSizesPanel extends JPanel
{
 String phrase = new String("This is a phrase in every font size from 6 to 20");
 int start = 6;
 int y;

 @Override
 public void paintComponent(Graphics gr)
 {
  super.paintComponent(gr);
  for (int i = 6; i < 20; i++)  
  {
   Font myFont = new Font("Times New Roman", Font.PLAIN, start);
   y = 30;
   y = y + 30;
   start = start + 1;
   gr.setFont(myFont);
   gr.drawString(phrase, 0, y);
  }
 }

 public static void main(String[] args)
 {
   JFontSizesPanel fonts = new JFontSizesPanel();
   JFrame frame = new JFrame("JFontSizesPanel");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.add(fonts);
   frame.setSize(1000,1000);
   frame.setVisible(true);
 }
}

我的第一次发帖很抱歉格式不佳,任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

在for循环之前声明y = 30.

y = 30;
for (int i = 6; i < 20; i++)  
{
   Font myFont = new Font("Times New Roman", Font.PLAIN, start);
   y = y + 30;
   start = start + 1;
   gr.setFont(myFont);
   gr.drawString(phrase, 0, y);
}

希望它有所帮助。

答案 1 :(得分:0)

int y = 30;

你必须在循环之外声明第一个值。否则它将在每次迭代中重置。