Java - отображение статической панели fileChooser и динамической панели флажков в одном графическом интерфейсе - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над проектом колледжа, чтобы пользователь мог выбрать файл CSV с помощью средства выбора файлов в графическом интерфейсе, а затем отобразить флажок для каждого столбца файла.

У меня есть внутренний коднаписано для обработки любого количества столбцов, но проблема у меня заключается в отображении флажков.Я подошел к этому так, чтобы поместить средство выбора файлов в одну панель и флажки в секунду, чтобы добавить вторую панель, сделав ее видимой из метода actionListener, как только файл будет прочитан.

Однако без массива имен флажков, заполненных при первой настройке графического интерфейса, я не могу отобразить флажки.

С тех пор я пытался использовать оба макета с вкладками макет с вкладками и макет карты и чтение макета мастера, но из того, что я видел, у всех этих компонентов были инициализированы их компоненты, а слушатели действия просто устанавливали их видимыми / невидимыми?

На этом этапе я начинаю удивлятьсявозможно ли сделать это в одном графическом интерфейсе или как я могу решить проблему с двумя графическими интерфейсами?

Я использую Java только в течение 3 месяцев, и любые указатели в правильном направлении будут огромной помощью,Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 марта 2012
I'm working on a college project to allow a user select a csv file via a 
file chooser in a GUI and then display a checkbox for each column of the file.

I have the back end code written to handle any number of columns but the 
problem I'm having is displaying the checkboxes.

cvs file представляет структуры таблиц, используйте JTable вместо того, чтобы ставить тонны JComponents в GUI, в JTable представляют JCheckBox только Boolean значение

2 голосов
/ 14 марта 2012

Рассмотрим

  • Чтение CSV-файла в методе doInBackground SwingWorker, чтобы не замораживать поток событий
  • Вы можете получить уведомление о графическом интерфейсе, когда SwingWorker будет сделан, добавивPropertyChangeListener для SwingWorker и проверка, если propertyName PropertyChangeEvent является «состоянием», а его newValue - SwingWorker.StateValue.DONE.
  • После того, как вы получите имена столбцов, вы можете динамически создавать свои JCheckBox и добавлять их вJPanel, который использует GridLayout.Нет никаких ограничений для создания компонентов динамически в Swing.
  • Затем отобразите этот JPanel в GUI либо через CardLayout, либо добавив его в отображаемый контейнер, либо отобразив его в диалоговом окне, таком как JDialog илиJOptionPane.Опять же, нет никаких ограничений на выполнение этого в Swing.
  • Обязательно revalidate() и repaint() любой контейнер, который изменяется, или вызов pack() в JFrame, если вам нужно изменить его размер (не рекомендуетсяесли это вообще возможно).
...