Я не уверен, что я делаю неправильно, чтобы изменить свой кадр, когда у меня есть пользовательские данные ввода, и нажмите enter, чтобы настроить строку, которая была установлена для отображения на кадре. Я просто собираюсь включить код, который, как мне кажется, применим, поскольку весь код довольно длинный, но если кто-то захочет увидеть что-то еще, дайте мне знать, и я могу опубликовать больше. Спасибо вам за помощь!рамка не будет перерисовываться после корректировки строки
//adds the Flower data to the Array and list
ActionListener flowerAddAction = new ActionListener(){
@Override
public void actionPerformed(ActionEvent flowerAddAction){
if(flowerAddAction.getActionCommand().equals("Enter")){
Name = NameTxt2.getText();
Colors = ColorTxt2.getText();
Smell = SmellTxt.getText();
ID = (int) IDCmbo.getSelectedItem();
if(((String) ThornCmbo.getSelectedItem()).equals("Yes"))
Thorns = true;
else
Thorns = false;
plants[count] = new Flower(Name, ID, Colors, Smell, Thorns);
displayEntered.setText(displayArray);
count++;
frame.repaint();
frameB.setVisible(false);
}
}
};
enterFlrData.addActionListener(flowerAddAction);
это выше код, чтобы добавить действие, когда пользователь нажимает клавишу ВВОД после ввода данных в текстовые поля и ComboBoxes. Ниже создается длинная строка массива, созданная вводом. (Если у кого есть лучший способ отображения массива на JLabel Я хотел бы знать, потому что я знаю, что это немного неаккуратно.
//create a string of all values for the array
displayArray = " ";
String displayArraytemp = " ";
for(int n = 0; n < 25; n++){
if(plants[n] != null){
if(plants[n] instanceof Flower){
displayArraytemp = (n + ": " + plants[n].getID() + ", " + plants[n].getName() + ", " + ((Flower)plants[n]).getColor() + ", " + ((Flower)plants[n]).getSmell() + ", Thorny: " + ((Flower)plants[n]).getThorns() + "/n");
}
else if(plants[n] instanceof Fungus){
displayArraytemp = (n + ": " + plants[n].getID() + ", " + plants[n].getName() + ", " + ((Fungus)plants[n]).getColor() + ", Poisonous: " + ((Fungus)plants[n]).getPoisonous() + "/n");
}
else if(plants[n] instanceof Weed){
displayArraytemp = (n + ": " + plants[n].getID() + ", " + plants[n].getName() + ", " + ((Weed)plants[n]).getColor() + ", Edible: " + ((Weed)plants[n]).getEdible() + ", Medicinal: " + ((Weed)plants[n]).getMedicinal() + ", Poisonous: " + ((Weed)plants[n]).getPoisonous() + "/n");
}
else if(plants[n] instanceof Herb){
displayArraytemp = (n + ": " + plants[n].getID() + ", " + plants[n].getName() + ", " + ((Herb)plants[n]).getColor() + ", " + ((Herb)plants[n]).getFlavor() + ", Medicinal: " + ((Herb)plants[n]).getMedicinal() + ", Poisonous: " + ((Herb)plants[n]).getSeasonal() + "/n");
}
displayArray += (displayArraytemp + "/n");
}
}
Ниже показывает остальное создание этикетки и включает в себя основной метод.
final JPanel p2Base = new JPanel();
displayEntered = new JLabel(displayArray);
//entire constant GUI put together
p2Base.setLayout(new BorderLayout(10,10));
p2Base.add(menuBar, BorderLayout.NORTH);
p2Base.add(p1Right, BorderLayout.EAST);
p2Base.add(displayEntered, BorderLayout.WEST);
public static void main(String[] args) {
frame = new GUI();
frame.setTitle("Plant Database");
frame.setSize(900,700);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
Для лучшей помощи в ближайшее время отправьте сообщение [SSCCE] (http://sscce.org/). –
Спасибо за ваш комментарий. После некоторого времени поиска я понял, что моя проблема в том, что мне нужно было объявить и установить строку внутри actionPerformed, чтобы она могла видеть. Я закончил тем, что создал текст StringBuilder и использовал и
, чтобы новый текст вводился на новые строки (что, я уверен, не самый лучший способ, но это сработало). Теперь я поймал все данные, но отобразит первую, затем первую и вторую записи. Итак, мне нужно избавиться от первого, чтобы не отображать дубликаты. Кто-нибудь имеет информацию о том, как перерисовать? То, что я пробовал, не сработало. – user2758501
* «То, что я пробовал, не сработало». * То, что вы разместили, не является SSCCE. –