現在、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);
}
}
初めての投稿ですので、フォーマットが貧弱でご迷惑をおかけして申し訳ありません。
'y = 30;' - これはループの前でなければなりません。 – Eran
yは、paintComponent()の内部ではなく、フィールドとして宣言する必要があります。開始と同じです。 –