Привет ребята!
Мне нужна небольшая помощь в этом, потому что я не могу понять, что я делаю неправильно. Я работаю над программой для написания конвертов. В программе есть 4 JTextField. Имя, город, адрес, почтовый индекс. Я использую keylistener для имени JTextField, чтобы распознать кнопку Enter и добавить новое имя JTextField. (В основном, он устанавливает второе имя JTextField видимым). Таким образом, всего у вас может быть 4 имени JTextField, а остальные (город, адрес, почтовый индекс) всего 7. Также есть кнопка печати j, jtable для просмотра уже написанных конвертов, ожидающих печати и т. Д. Когда я использую g.drawString(), я использую предопределенные значения x, y, которые динамически изменяются в соответствии с длиной текста поля Names, измеренной методом Font Metrics StringWidth() и вычисляемой с правым значением поля... что угодно. Моя основная проблема здесь:
if (name.length() > address.length()) {
g.drawString(name,
(250 - nameCord_X) + 46, 214); //this is working
g.drawString(city, (250 - nameCord_X) + 46, 226);
g.drawString(address, (250 - nameCord_X) + 46, 238);
g.drawString(postal, (250 - nameCord_X + 46, 250);
} else {
if (address.length() > name.length()
&& name2.isEmpty())
{ // this is working
g.drawString(name, (250 - addressCord_X) + 46, 214);
g.drawString(city, (250 - addressCord_X) + 46, 226);
g.drawString(address, (250 - addressCord_X) + 46, 238);
g.drawString(postal, (250 - addressCord_X + 46, 250);
}
}
if (name2.length() > name.length()
&& name2.length() > address.length()
&& name2.isVisible())
{// this is working
g.drawString(name, (250 - name2Cord_X) + 46, 202);
g.drawString(name2, (250 - name2Cord_X) + 46, 214);
g.drawString(city, (250 - name2Cord_X) + 46, 226);
g.drawString(address, (250 - name2Cord_X) + 46, 238);
g.drawString(postal, (250 - name2Cord_X) + 46, 250);
}
//This is the part that doesnt working. it prints out 5 lines
// but the 2nd line is the same as first line,
// and the real 2nd line value is printed over.
// For example Name: Lion Name2:Lion (altough I typed for
// example horse into name2 field, and the program draw
// the horse string over the 2nd line which contains Lion.)
//Altough it prints out the all 5 row, it messing only with
//the second row :-/
if( (name.length() > name2.length()
&& name.length() > address.length()
&& name2.isVisible()))
{
g.drawString(name, (250 - nameCord_X) + 46, 202);
g.drawString(name2, (250 - nameCord_X) + 46, 214);
g.drawString(city, (250 - nameCord_X) + 46, 226);
g.drawString(address, (250 - nameCord_X) + 46, 238);
g.drawString(postal, (250 - nameCord_X) + 46, 250);
}