2015-05-08 4 views
0

Использование java.awt и javax.swing Я создаю небольшой графический интерфейс, который отобразит несколько записей в JPanel. После успешного отображения единственной записи с текстом по умолчанию я начал пытаться реализовать цикл for для создания нескольких записей из нескольких массивов, и мне трудно загружать текстовые строки, обозначающие каждый компонент. После добавления цикла for и массивов я теперь просто получаю одну черную рамку вокруг небольшого пространства без данных.Stupid For loop реализация

Вот код, который я работаю с конкретно:

package myInterfaceComponents; 

import java.awt.*; 

public class ListOfEntries extends JComponent { 
    //instance variables 
     //worked until arrays added 
     String[] telephones = {"5551234567", "5557654321", "5555671234"}; 
     String[] names = {"Emily", "Billy Bob", "Wiley Coyote"}; 
     String[] periods = {"2p - 3p", "1a - 5a", "4:30p - 11p"}; 
    private JLabel telephone = new JLabel(); 
    private JTextField name = new JTextField(); 
    private JButton period = new Button(); 
    private StatusCombo serviceCycle = new StatusCombo(); 
    private AreaCombo area = new AreaCombo(); 

    //constructors 
    public ListOfEntries() { 
     setLayout(new GridLayout(2, 3)); 

     for (int x = 0; x == 2; x++) {   //worked until added 
     telephone.setText(telephones[x]); //worked until added 
     name.setText(names[x]);    //worked until added 
     period.setText(periods[x]);   //worked until added 
     add(telephone);   
     add(name); 
     add(area); 
     add(period); 
     add(serviceCycle); }    //worked until add: "}" 

    Border line = BorderFactory.createLineBorder(Color.BLACK); 
    Border titled = BorderFactory.createTitledBorder(line, "Day: DD MMM YYYY"); 
    setBorder(visible); 
    setVisible(true); } 
} 

Очевидно, что я делаю что-то неправильно с массивами, или установки компонентов, но после нескольких попыток & Google поиск я пропускаю что-то , Буду признателен за любую оказанную помощь.

ответ

2

Я на самом деле не попытался запустить программу, но я замечаю свой цикл:

for (int x = 0; x == 2; x++) {   //worked until added 
     telephone.setText(telephones[x]); //worked until added 
     name.setText(names[x]);    //worked until added 
     period.setText(periods[x]);   //worked until added 
     add(telephone);   
     add(name); 
     add(area); 
     add(period); 
     add(serviceCycle); } 

В этом цикле вы инициализации переменной счетчика «х» до 0, а затем в следующем заявлении у вас есть: x == 2, который будет запускать цикл только тогда, когда x равен 2, а так как x был инициализирован равным 0, этот цикл никогда не будет запущен. Попробуйте изменить инструкцию x == 2 на x < 2 и посмотреть, поможет ли это вообще.

+0

Спасибо, я исправил эту (очень глупую) ошибку :) –

+0

Не беспокойтесь, если это не исправить, я собирался предлагать играть с размерами сетки. Похоже, что каждый раз через петлю добавлялось 5 элементов в сетку, но сетка была всего 2 на 3. Рад, что это сработало. –