Я делаю проект для школы, который требует, чтобы я прочитал файл и сделал гистограмму со считанными данными.Я создал класс, который создает JFrame и рисует прямоугольники, чтобы разделить фрейм на раздел для имени каждого из данных (имя футболиста) и один для столбцов (возраст игрока).У меня есть метод, который предназначен для увеличения размера шрифта до тех пор, пока самая длинная (напечатанная) строка не займет ширину, выделенную для пространства, и не вернет шрифт того размера, который будет использоваться в методе рисования.
Itработает, когда создается исходный JFrame, но при изменении его размера он иногда увеличивает размер шрифта от 1 до большого, но не всегда.Я в растерянности.Вывод консоли показывает (для меня), что условие моего цикла while не было выполнено, но размер шрифта все еще был увеличен ... любая информация будет принята с благодарностью.Спасибо!
private Font myFont(int allowedW, int allowedH, int numData) {
// needs to check length of font and size of JFrame and set font (size)
// accordingly
String longest = "";
int fontSize = 1;
Font f = new Font("SansSerif", Font.BOLD, fontSize);
for (BarData b : this.graphData) {
if (getFontMetrics(f).stringWidth(b.getName()) > getFontMetrics(f)
.stringWidth(longest)) {
longest = b.getName();
}
}
while ((getFontMetrics(f).stringWidth(longest) < allowedW)){
//&& ((getFontMetrics(f).getHeight() * numData) < allowedH)) {
f = new Font("SansSerif", Font.BOLD, fontSize);
System.out.println(longest);
System.out.println("length " + getFontMetrics(f).stringWidth(longest));
System.out.println("allowed width " + allowedW);
System.out.println(fontSize);
fontSize++;
}
return f;
}
вывод выглядит примерно так, когда я перетаскиваю, чтобы изменить размер jframe:
Демариус Томас
длина 150
допустимая ширина 158
17
Демариус Томас
длина 170
разрешенная ширина 158
18