MindFusion .NET控制元件教程:Charting for Java Swing中的FunctionSeries
MindFusion.Diagramming for WinForms是一個能幫助你建立工作流和程式圖表的.NET控制元件;資料庫實體關係圖表;組織圖表;物件層次和關係圖表;圖表和樹。它是基於物件-圖表框,表格和箭頭型別,將其歸類分派給其他並結合成複雜的結構。該控制元件提供超過預先定義的50多種圖表框,如自定義設計樣式和對圖表框著色等。
在此部落格文章中,我們將構建您在下圖中看到的圖表:
下一節將向您提供逐步指南,介紹如何從頭開始構建該二次方程式圖表。
I.專案設定
在您首選的Java IDe中建立一個新的Java專案,並在專案資料夾中複製JChart.jar檔案。這是包含該庫的* .jar存檔。在我們的示例中,我們已將其複製到一個新的子資料夾中,該子資料夾稱為“庫”。JChart.jar在Java Swing的MindFusion Charting試用版的可下載存檔中找到。
我們需要在圖表應用程式的構建路徑中包含JChart.jar。在Eclipse中,我們透過右鍵單擊專案根資料夾並選擇“屬性-> Java構建路徑->新增JAR”來執行此操作,然後導航到專案資料夾中JChart.lib的位置:
然後,我們建立一個新類,將其稱為MainWindow並使它擴充套件JFrame。這將是我們應用程式的唯一類,它將啟動它:
public class MainWindow extends JFrame class MainWindow extends JFrame {{ private static final long serialVersionUID = 1L;private static final long serialVersionUID = 1L; //the main method of the application//the main method of the application public static void main(String[] args)public static void main(String[] args) {{ SwingUtilities.invokeLater(new Runnable()SwingUtilities.invokeLater(new Runnable() {{ public void run()public void run() {{ trytry {{ new MainWindow().setVisible(true);new MainWindow().setVisible(true); }} catch (Exception exp)catch (Exception exp) {{ }} }} }); }); }} }}
我們匯入將要使用的名稱空間:它們既用於圖表,也用於標準的AWT和Swing名稱空間:
import java.awt.BorderLayout; java.awt.BorderLayout; import java.awt.Color;import java.awt.Color; import java.util.Arrays;import java.util.Arrays; import javax.swing.JFrame;import javax.swing.JFrame; import javax.swing.SwingUtilities;import javax.swing.SwingUtilities; import com.mindfusion.charting.FunctionSeries;import com.mindfusion.charting.FunctionSeries; import com.mindfusion.charting.GridType;import com.mindfusion.charting.GridType; import com.mindfusion.charting.swing.LineChart;import com.mindfusion.charting.swing.LineChart; import com.mindfusion.drawing.Brushes;import com.mindfusion.drawing.Brushes; import com.mindfusion.drawing.DashStyle;import com.mindfusion.drawing.DashStyle; import com.mindfusion.drawing.SolidBrush;import com.mindfusion.drawing.SolidBrush;
完成之後,我們就可以建立圖表了。
二.折線圖
我們建立LineChart是一個單獨的方法,我們將從主類的建構函式中呼叫該方法。
private LineChart initializeChart() LineChart initializeChart() {{ LineChart lineChart = new LineChart(); LineChart lineChart = new LineChart(); .................................... .................................... return lineChart;return lineChart; }}
我們要呈現的數學函式圖形將透過FunctionSeries類繪製。它的建構函式將定義函式方程的數學表示式作為字串。然後,它透過JChart中包含的MindFusion.Scripting庫對其進行解析。在我們的例子中,我們建立了兩個FunctionSeries,它們使用了兩個不同的二次方程式:
FunctionSeries series1; series1; FunctionSeries series2; FunctionSeries series2; trytry { { series1 = new FunctionSeries(= new FunctionSeries( "3*x*x+2*x+2", 1000, -5, 5 );"3*x*x+2*x+2", 1000, -5, 5 ); series1.setTitle("Quadratic equation: 3*x*x+2*x+2");.setTitle("Quadratic equation: 3*x*x+2*x+2"); lineChart.getSeries().add(series1);.getSeries().add(series1); //mean value is -2//mean value is -2 series2 = new FunctionSeries(= new FunctionSeries( "-3*x*x+4*x+1", 1000, -5, 5);"-3*x*x+4*x+1", 1000, -5, 5); series2.setTitle("Quadratic equation: -3*x*x+4*x+1");.setTitle("Quadratic equation: -3*x*x+4*x+1"); lineChart.getSeries().add(series2);.getSeries().add(series2); }} catch (Exception e)catch (Exception e) {{ // could not parse the expression// could not parse the expression e.printStackTrace();.printStackTrace(); }}
請注意,FunctionSeries的建構函式包含在try-catch塊中。如果無法解析方程式,則可以這樣做。在這種情況下,將列印異常,以提供有關錯誤的資訊。
提供給FunctionSeries建構函式的其他引數是:1.要為功能圖計算的點數;2.計算間隔的開始;3.計算間隔結束。計算包括開始和結束值。
接下來,我們獲取用於JFrame的ContentPane,並使用BorderLayout將LineChart擴充套件到它的整個工作區域上:
protected MainWindow() MainWindow() {{ setDefaultCloseOperation(EXIT_ON_CLOSE);(EXIT_ON_CLOSE); setSize(650, 400);(650, 400); setTitle("Java Swing Library for Charts and Gauges: FunctionSeries"); ("Java Swing Library for Charts and Gauges: FunctionSeries"); //add the chart to the ContentPane//add the chart to the ContentPane getContentPane().add(initializeChart(), BorderLayout.CENTER);().add(initializeChart(), BorderLayout.CENTER); }}
現在,如果我們執行示例,即使沒有樣式,我們也可以看到圖表的圖形:
我們將使用Java圖表庫的眾多樣式功能使圖表在視覺上更具吸引力。
三.樣式表
我們首先使用getXAxis和getYAxis方法來訪問圖表的兩個主軸並設定其樣式。
lineChart.getXAxis().setMinValue(-5.0);.getXAxis().setMinValue(-5.0); lineChart.getXAxis().setMaxValue(5.0);.getXAxis().setMaxValue(5.0); lineChart.getXAxis().setInterval(0.5);.getXAxis().setInterval(0.5); lineChart.getXAxis().setOrigin(0.0);.getXAxis().setOrigin(0.0); lineChart.getXAxis().setTitle("X-axis");.getXAxis().setTitle("X-axis"); lineChart.getYAxis().setMaxValue(30.0);.getYAxis().setMaxValue(30.0); lineChart.getYAxis().setMinValue(-30.0);.getYAxis().setMinValue(-30.0); lineChart.getYAxis().setTitle("Y-axis");.getYAxis().setTitle("Y-axis");
我們使用setMinValue和setMaxValue方法指定軸的兩端。如果我們未使用setInterval明確指定間隔,則圖表將對其進行計算,以便最小和最大之間恰好有10個間隔。我們還使用setTitle指定如何呼叫軸。
然後,我們指定圖表的GridType以及渲染網格時使用的筆觸。我們想要交叉網格:
//styling the grid lineChart.setGridType(GridType.Crossed);.setGridType(GridType.Crossed); lineChart.getTheme().setGridLineColor(new Color(192, 192, 192));.getTheme().setGridLineColor(new Color(192, 192, 192)); lineChart.getTheme().setGridLineStyle(DashStyle.Dot);.getTheme().setGridLineStyle(DashStyle.Dot);
defaut使用從圖表的Series例項的Title中獲取的圖例標籤來繪製圖例。我們想隱藏圖例的標題並增加圖例標籤的字型。屬性是ShowTitle的LegendRenderer和DataLabelsFontSize。
lineChart.getLegendRenderer().setShowTitle(false);.getLegendRenderer().setShowTitle(false); lineChart.getTheme().setDataLabelsFontSize(12);.getTheme().setDataLabelsFontSize(12);
最後,我們需要設定圖表系列的顏色。有多種樣式可供選擇,但在我們的案例中,我們需要使用單色筆觸對每個系列進行簡單的著色。我們使用CommonSeriesStrokes和CommonSeriesStrokeThicknesses來指定圖形線的顏色和粗細。我們還將CommonSeriesFills設定為使用與筆觸相同的畫筆集。我們不需要透過圖表渲染來使用它們,但是圖例將它們用於在系列標題之前繪製顏色方塊:
lineChart.getTheme().setHighlightStroke(Brushes.Orange);.getTheme().setHighlightStroke(Brushes.Orange); lineChart.getTheme().setCommonSeriesStrokes(.getTheme().setCommonSeriesStrokes( Arrays.asList(Arrays.asList( new SolidBrush( new Color (90, 116, 68 )),new SolidBrush( new Color (90, 116, 68 )), new SolidBrush( new Color (70, 105, 125))));new SolidBrush( new Color (70, 105, 125)))); lineChart.getTheme().setCommonSeriesFills(.getTheme().setCommonSeriesFills( Arrays.asList(Arrays.asList( new SolidBrush( new Color (90, 116, 68 )),new SolidBrush( new Color (90, 116, 68 )), new SolidBrush( new Color (70, 105, 125))));new SolidBrush( new Color (70, 105, 125)))); lineChart.getTheme().setCommonSeriesStrokeThicknesses(.getTheme().setCommonSeriesStrokeThicknesses( Arrays.asList(3.0));Arrays.asList(3.0));
這些是圖表應用程式的最後幾行程式碼。現在,我們有一個漂亮的二次函式圖。這是完整的專案原始碼,以及JChart.jar的試用版:
要獲得技術支援,請使用Java Swing圖表庫的討論區,網址為
關於適用於Java Swing的MindFusion圖表和規格庫:這是一個本機Java Swing庫,適用於繪製多種圖表和規格。靈活的API允許組合各種圖表部分:軸,圖和系列,以建立適合任何業務應用程式特定需求的獨特圖表:具有多個圖的圖表,四面八方的軸,在一個圖中的不同圖表圖形等等。所有圖表系列都來自基本的“系列”介面,程式設計師可以將其實現以建立自己的系列類。外觀由主題控制,圖表外觀可自定義。量具庫是圖表控制元件的一部分,並提供一組橢圓形和線性量具,可用於建立任何型別的量具(圓形或矩形量具),最多具有三個量尺。該庫隨附了一組預定義的流行儀表:指南針,時鐘,溫度計等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995027/viewspace-2759335/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Java Swing] 在mac中不顯示java的dock iconJavaMac
- 好程式設計師Java教程解讀什麼是swing程式設計師Java
- Java圖形化:Swing表格的使用Java
- Java Swing坦克小遊戲Java遊戲
- 34套Java專案教程+原始碼包含Java swing專案 Java web專案 Java控制檯專案(視訊教程+原始碼)Java原始碼Web
- java Swing程式設計入門Java程式設計
- java Swing詢問對話方塊Java
- Java-GUI 程式設計之 SwingJavaGUI程式設計
- Java 獲取Excel中的表單控制元件JavaExcel控制元件
- 第88節:Java中的Ajax和ASP.NET和TCP/IP 教程和JSONJavaASP.NETTCPJSON
- 第88節:Java中的Ajax和ASP.NET和TCP/IP 教程和JJavaASP.NETTCP
- swing
- Java-GUI程式設計之Swing元件JavaGUI程式設計元件
- Java swing是什麼?有什麼作用?Java
- Java學習之Swing Gui程式設計JavaGUI程式設計
- 比較Java Swing中三種註冊事件的方法Java事件
- 解決Java中Swing的JFrame的setTitle方法輸入中文圖形介面亂碼辦法Java
- Java培訓教程:Java中的位移運算子!Java
- .NET 控制元件轉圖片控制元件
- 簡單的list介面和edit介面使用java swing實現Java
- 在JavaFX程式中嵌入Swing內容Java
- javafx 和swing_整合JavaFX和SwingJava
- 1、Swing簡介:Swing是什麼?
- java程式通過swing呼叫javaFx更新 資料Java
- 淺談ASP.NET4中構造“.NET研究”HTML5視訊控制元件ASP.NETHTML控制元件
- Java swing JFrame用repaint出現閃爍的問題解決JavaAI
- VB.net chart 控制元件使用控制元件
- WPF窗體中嵌入/使用WinForm類/控制元件(基於.NET Core)ORM控制元件
- Swing結構
- Java的GUI框架如何選擇? Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot?JavaGUI框架GoApache
- 在.NET Core 3.0中的WPF中使用IOC圖文教程
- 使用Java Swing開發公章、私章圖片(已開源)Java
- ASP.NET 伺服器控制元件的生命週期ASP.NET伺服器控制元件
- 好程式設計師Java教程分享Java中this的幾種用法程式設計師Java
- java小工具,使用Swing展示左樹右表結構Java
- 整合JavaFX和SwingJava
- Dictionary application using SwingAPP
- WPF中Ribbon控制元件的使用控制元件