У меня проблемы с моим Java-приложением, и я не могу найти подходящий ответ.Таким образом, всплывающее меню по умолчанию, вызываемое правой кнопкой мыши, изменяет цвет фона моего графика позади всплывающего окна.Вы можете найти изображения ниже.Я рад оставить всплывающее окно по умолчанию без «глючного» поведения или разработать собственное, если необходимо.
Нажатие кнопки запускает поток данных и добавляет диаграмму в компонент JInternalFrame:
![https://i.stack.imgur.com/CqQFx.png](https://i.stack.imgur.com/CqQFx.png)
Если щелкнуть правой кнопкой мыши изображение, появится всплывающее окно по умолчанию:
![https://i.stack.imgur.com/j4GuT.png](https://i.stack.imgur.com/j4GuT.png)
Если я затем щелкну прочь, область прямоугольника, покрытая всплывающим окном, наложит диаграмму следующим образом:
![https://i.stack.imgur.com/pGaV2.png](https://i.stack.imgur.com/pGaV2.png)
TimeseriesMonitorModel model = new DefaultTweetMonitorModel();
jif.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
try {
jif.setContentPane(new TweetSeriesChartPane(model, TweetMonitor.keywords, tkc));
jif.setSize(jif.getWidth(), jif.getHeight());
} catch (InterruptedException ex) {
Logger.getLogger(TweetMonitor.class.getName()).log(Level.SEVERE, null, ex);
}
jif.setVisible(true);
, где jif - Jinternalframeи
public TweetSeriesChartPane(TimeseriesMonitorModel model, String[] seriesNames, TweetKeywordCount tkc) throws InterruptedException {
this.seriesNames = seriesNames;
this.tkc = tkc;
this.model = model;
XYChartTimeseries myRealTimeChart = new XYChartTimeseries();
chart = myRealTimeChart.getChartWithTitle();
List[] tweetData = model.getFrequencyCount(new AtomicIntegerArray(seriesNames.length)); // we are starting from 0
int i = 0;
for (String keyword : seriesNames) {
List<Integer> yData = (List<Integer>) tweetData[1].get(i);
chart.addSeries(keyword, tweetData[0], yData); // adding first value
i++;
}
setLayout(new BorderLayout());
XChartPanel<XYChart> chartPane = new XChartPanel<>(chart);
add(chartPane);
UpdateWorker worker = new UpdateWorker(this, seriesNames, this.tkc);
worker.execute();
}