JFreeChartとSQLを使用して、データベースに存在するデータに基づいてグラフを作成するメソッドを作成しました。私は3つの方法、1つの特定の例、ユーザーの重量対時間があります。私はこれらのグラフをJTabbedPaneに表示したいと思います。 1つのタブでメソッドを呼び出すと、static/voidメソッドが許可されていないことがわかります。私の方法にはパラメターはありません。JTabbedPaneでメソッドを呼び出す
panelWeight = new JPanel();
panelWeight.setLayout(null);
panelWeight.add(StatGraph.WeightGraph());
EDIT:ここに私の最初の試みである 私はコンポーネントへのvoidメソッドを呼び出すことはできませんし、B)はnullレイアウトはスケールしない)を発見した後、描画ボードに戻りました。ここではJTabbedPaneを呼び出してメソッドを非voidにする、書き直したメソッドを示します。
public static ChartFrame WeightGraph(){
ChartFrame returnFrame = null;
try{
ConnectionManager connectionManager = ConnectionManager.getInstance();
Connection connection = connectionManager.getConnection();
UserInfoManager user = new UserInfoManager();
int username = user.getId();
String query = "SELECT DATE, WEIGHT FROM STATS WHERE ID=" + username; JDBCCategoryDataset dataset = new JDBCCategoryDataset(connection, query);
JFreeChart chart = ChartFactory.createLineChart("WEIGHTvsDATE Chart", "Date", "Weight", dataset, PlotOrientation.VERTICAL, false, true, true);
BarRenderer renderer = null;
CategoryPlot plot = null;
renderer = new BarRenderer();
ChartFrame frame = new ChartFrame("Progress Log", chart);
returnFrame = frame;
//frame.setVisible(true);
//frame.setSize(750,400);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
return returnFrame;
}
次に、GUIフレームに戻り、クリックリスナーを使用してアクティブ化されたTabbedPaneのPanelに次のコードを追加します。 panelWeight.add(StatGraph.WeightGraph()); はしかし、私は次のエラーを取得する:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Container.java:488)
at java.awt.Container.addImpl(Container.java:1089)
at java.awt.Container.add(Container.java:415)
at GUI.PT.ProgressStatsPT.panelWeightMouseClicked(ProgressStatsPT.java:392)
at GUI.PT.ProgressStatsPT.access$600(ProgressStatsPT.java:26)
at GUI.PT.ProgressStatsPT$7.mouseClicked(ProgressStatsPT.java:138)
at java.awt.Component.processMouseEvent(Component.java:6528)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
これらの[examples](http://stackoverflow.com/search?tab=votes&q=user%3a230513%20%5bjfreechart%5d%20jdbcXYdataset)も参照してください。これは時系列に適したJDBCXYDatasetです。これが重複ではない場合は、例を引用したものではなく、修正されたアプローチを示す[mcve]を含めるように質問を編集してください。 – trashgod
@trashgod JFreeChart、SQL、およびJTabbedPaneに関連するリソースが見つかりません。使用できるリソースは、SQLクエリを実行するときに問題を返します。 –
'ヌル(null) 'レイアウトは縮尺が変わりません。私はあなたがこれを見落としてしまったと感じています[例](http://stackoverflow.com/a/24762078/230513)。 – trashgod