Я работаю над графическим интерфейсом, в котором необходимо добавить датчики к двум JScrollPanes
в двух разных классах. Существует класс UIManager, который отправляет ArrayList
датчиков, в настоящее время подключенных к классу пользовательского интерфейса, который затем устанавливает эти датчики внутри JPanel
, который затем устанавливается в качестве окна просмотра для двух JScrollPanes:
Из класса UIManager
private static void updateSensorsConnectedSmallEntries() {
UserInterface.setSensorEntriesSmall(sensorEntriesSmall);
}
Внутри класса UserInterface
public static void setSensorEntriesSmall(ArrayList<SensorEntrySmall> sesList) {
setSensorEntriesSmall(tabDataLogging.getConnectedSensorsScrollList(), sesList);
setSensorEntriesSmall(tabLiveChart.getConnectedSensorsScrollList(), sesList);
}
private static void setSensorEntriesSmall(JScrollPane pane, ArrayList<SensorEntrySmall> sesList) {
javax.swing.JPanel scrollList = new javax.swing.JPanel();
scrollList.setBackground(Color.WHITE);
pane.setBackground(Color.WHITE);
javax.swing.GroupLayout paneLayout = new javax.swing.GroupLayout(scrollList);
scrollList.setLayout(paneLayout);
GroupLayout.ParallelGroup hor = paneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
GroupLayout.ParallelGroup ver = paneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);
GroupLayout.SequentialGroup horSeq = paneLayout.createSequentialGroup();
GroupLayout.SequentialGroup verSeq = paneLayout.createSequentialGroup();
GroupLayout.ParallelGroup horSeqPlaceHolder = paneLayout.createParallelGroup();
horSeq.addContainerGap();
verSeq.addContainerGap();
for (SensorEntrySmall ses : sesList) {
horSeqPlaceHolder.addComponent(ses.getSensorEntrySmall());
verSeq.addComponent(ses.getSensorEntrySmall(), javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE);
verSeq.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
}
horSeq.addGroup(horSeqPlaceHolder);
horSeq.addContainerGap();
verSeq.addContainerGap();
hor.addGroup(horSeq);
paneLayout.setHorizontalGroup(hor);
ver.addGroup(verSeq);
paneLayout.setVerticalGroup(ver);
pane.setViewportView(scrollList);
}
Похоже, проблема в том, что список назначается различным вкладкам. Если я назначу их сначала на tabDataLogging
, а затем на tabLiveChart
, датчики отображаются только на tabLiveChart
и наоборот.
Я бы хотел, чтобы датчики отображались на обеих вкладках. У кого-нибудь есть предложения о том, что здесь происходит не так?