2017-07-30 3 views
0

現在、6〜20のフォントサイズでフレーズを表示するプログラムを作成中です。これらのフレーズを作成するループでは、ループによって異なるフレーズのy値が変更されることはありません。彼らはお互いの上に作られているようです。ここにコードがあります。forループで値が変更されない

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

'y = 30;' - これはループの前でなければなりません。 – Eran

+0

yは、paintComponent()の内部ではなく、フィールドとして宣言する必要があります。開始と同じです。 –

答えて

0
int y = 30; 

ループの外側で最初の値を宣言する必要があります。それ以外の場合は、繰り返しごとにリセットされます。

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); 
} 

希望します。

関連する問題