導航:首頁 > 編程語言 > javaweb刻度線

javaweb刻度線

發布時間:2023-03-25 05:12:02

⑴ 如何用java實現Web伺服器

如何用Java實現Web伺服器 一、HTTP協議的作用原理

WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文本傳送協議(HTTP)進行通信。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、面向對象的協議。HTTP協議的作用原理包括四個步驟:

(1) 連接:Web瀏覽器與Web伺服器建立連接,打開一個稱為socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功。

(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞)。GET命令的格式為:

GET 路徑/文件名 HTTP/1.0

文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本

(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。

⑵ Webview+echarts實現Android圖表

WebView是android中一個非常實用的組件,它和safai、chrome一樣都是基於webkit網頁渲染引擎,可以通過載入html數據的方式便捷地展現軟體界面,WebView主要負責解析、渲染。webview的常明拆見工具類和用法如下:

先在js中定義要被調用方法:

```javascript

function initChartView() {}

```

安卓中的類EChartWebView注冊js方法:

```java

fun initChartView(){

    Log.i("initChartView():",""+loadUrl("javascript:initChartView()"))

}

```

javascriptInterface、webViewClient.shouldOverrideUrlLoading()、webChromeClient.onconsoleMessage()、webChromeClient.onJspompt()

具體使用在後面敘述

(參考: isea533的ECharts-Java使用Java快速開發ECharts圖表  和  _frendy的輕松實現 Android 圖表 • ECharts)

由於eacharts 里各種圖表的屬性和數據等都是由 option ,使用 WebView 載入H5網頁有兩種思路:

1)由 Android 獲取數據並生成 option,而 H5 則負責解析 option 並調用 ECharts 進行繪制。

2)粗謹H5 負責所有流程,獲取數據、生成 option並調用 ECharts 進行繪制。

在此使用第 1)種方法,具體實現如下:

```java

implementation'com.github.frendyxzc:Charts:0.0.2'

implementation'com.github.abel533:ECharts:2.2.7'

```

--- loadUrl(URL):載入http網頁的方法

--- webSettings :與webview相關的配置

--- addJavascriptInterface :提激凳棗供js調用java的相關方法

--- setDataSource : 對java構建完成的option進行返回

在com.github.abel533.echarts.Option中已提供了與Echarts實現的各種配置,我們只需調用即可

tooltip():與標簽有關

grid():刻度線

CategoryAxis():建立橫向類目軸

ValueAxis():縱軸

MarkPoint():點數據

MarkLine():標線

圖表數據填充:

數據填充Echarts的XY軸的兩種方法

(1)for in 循環方式

```java

for (item  in  Arraylist<E>) {

categoryAxis.data(item.x)

line.data(item.y)

}

```

(2)Kotlin的變長參數

```java

categoryAxis.data(*dataArrayX)

line.data(*dataArrayY)

```

註:此處的dataArrayX和dataArrayY是任意類型的數組

*建立完成後選擇展示的圖表類型(線型圖表)*:

```java

option.exportToHtml("line.html")

```

註:line.html和js等文件放置在安卓assets文件中

安卓端的數據就是option,option是構建的json字元串

在安卓端獲取數據並構建被js調用的方法:

```java

addJavascriptInterface(EChartInterface(context), "Android")

```

定義一個介面供數據回調:

```java

private var dataSource: DataSource? = null

fun setDataSource(data: EChartWebView.DataSource, needReload: Boolean) {

    dataSource = data

}

interface DataSource {

        fun markChartOptions(): GsonOption

    }

```

介面里方法的定義:

```java

  internal inner class EChartInterface(var context: Context) {

        val chartOptions: String?

            @JavascriptInterface

            get() {

                if (dataSource != null) {

                    val option = dataSource!!.markChartOptions()

                    Log.i("xq","echarts圖表的option:$option")

                    return option.toString()

                }

                return null

            }

    }

```

在js頁面調用安卓的方法

```java

option = JSON.parse(Android.getChartOptions());

JSON.parse是將json字元串其轉化為json對象

```

其中Android.getChartOptions()就是js調用安卓的方法

初始化Echarts圖標並設置option ,實現如下:

```java

chart = echarts.init(chartDoc);

chart.setOption(option);

```

介紹:formatter用於規定echarts數據顯示的內容和格式。

使用:

餅圖模板變數:

(1){a}:系列名,series.name。

(2){b}:數據名,series.data.name。

(3){c}:數據值,series.data.value。

(4){d}:百分比。

(5){@xxx}:數據中名為'xxx'的維度的值,如{@proct}表示名為'proct'` 的維度的值。

(6){@[n]}:數據中維度n的值,如{@[3]}` 表示維度 3 的值,從 0 開始計數。

示例:

formatter:"{b}:{c}({d}%)"

折線、柱狀圖模板變數:

(1){a}:系列名,series.name。

(2){b}:數據名,xAxis.data。

(3){c}:數據值,yAxis.data。

(5){@xxx}:數據中名為'xxx'的維度的值,如{@proct}表示名為'proct'` 的維度的值。

(6){@[n]}:數據中維度n的值,如{@[3]}` 表示維度 3 的值,從 0 開始計數。

示例:

formatter:"{a}<br/>{b}:{c}"

此方法需要自行拼接要顯示的標簽內容,可以靈活配置比如有些圖表option的配置在類庫 abel533:ECharts:2.2.7 中是沒有的,自定義formatter內容需要知道參數具體表示的內容,這里可以通過js的列印列印出函數傳入的參數值,使用函數返回params對象,params是點數據的對象集合,列印出它的內容即可知道每個參數具體代表什麼。

示例:

formatter:function(params){

  console.log(params)

  var result = params[0].name

  for(i=0;i<params.length;i++){

    result = result+"<br>"+"<span style=display:inline-block;margin-right:5px;border-radius:10px;width:8px;height:8px;background-color:"+params[i].color+"></span>"+params[i].seriesName+": "+params[i].value

  }

  return result

}

⑶ 零基礎如何系統學習Java Web

你要下決心,我要轉行做開發,這樣你才能學成。
你要會打字,我公司原來有一個程序員,打字都是兩個手一指禪,身為程序員你一指禪怎麼寫出的代碼,半個月後被辭退了,當然我們還是朋友。
前兩個條件都符合了你就可以學了,首先要了解web是什麼,一般呢,java web開發無外乎就這么兩大類,第一,互聯網公司,第二,軟體公司。對於互聯網公司和軟體公司還有一些差別,互聯公司是面向廣大網民的,會有專門的ui設計,前台開發,後台代碼開發,ios開發,android開發,軟體測試,產品經理等,軟體公司呢,一般就是做需求的,開發的,測試的。沒有美工
所以樓主你看要學什麼了。是想做客戶端開發還是軟體開發,還是美工,還是UI....balabala

關於java 我把我知道的說一下,作為一個java程序員 從前段到後端你都要知道一些,不要求你把頁面做的和美工一樣專業。
但是你要懂一些技術,有些軟體公司前台後台都是一個做的。

那麼問題來了:
4.1 前台:html + jsp +javaScript +servlet (servlet現在可能不需要寫了,但是也要知道的好。如果有經歷學一下)這些都是基礎。
4.2 後台:一個MVC框架 最常見的就是struts2 hibernate spring 這三個了,還有很多流行的框架,這三個是你必須要會的。
4.2 資料庫:從mysql 開始 會寫簡答的sql語句,insert update delete select
如果這些你都會了相信你也會使用一些工具了。

關於工具:上面這些你都會了相信你也會使用一些工具了。
工具:
1. java程序員 eclipse肯定要熟練使用 JDK的安裝 環境變數的配置 都搞定了就開始你的編程之旅吧。

2.資料庫工具,mysql我用navicat Oracle我用plsql

3.notepad++這個經常使用 查看一些文檔
4.肯定忘不了一個版本控制工具了,當前流行的svn 和 git 要會一個
上面那些都學會了足可以找一份工作了,甚至不需要都學會,工作工還會遇到的一些需要你學的知識,很多第三方框架,如quartz任務調度,基本沒個項目都會用。JBPM 工作流,webservice,restful,json,xml,spring mvc

附上出處鏈接:https://www.hu.com/question/31151832

⑷ 如何編寫一個簡單的java web前後端實例

Java代碼編寫的30條實踐建議,很多人認為學習java需要較好的計算機語言基礎,而事實上高中學歷的學習java,月薪過萬的比比皆是,Java代碼編寫的30條實踐建議,java知識點學習貴在積累。
Java代碼編寫的30條實踐建議:
(1) 類名首字母應該大寫。欄位、方法以及對象(句柄)的首字母應小寫。對於所有標識符,其中包含的所有單詞都應緊靠在一起,而且大寫中間單詞的首字母。
例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定義中出現了常數初始化字元,則大寫static final基本類型標識符中的所有字母。這樣便可標 志出它們屬於編譯期的常數。
Java包(Package)屬於一種特殊情況:它們全都是小寫字母,即便中間的單詞亦是如此。對於域名擴展名稱,如com,org,net或者e等,全部都應小寫(這也是Java 1.1和Java 1.2的區別之一)。
(2) 為了常規用途而創建一個類時,請採取"經典形式",並包含對下述元素的定義:
equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3) 對於自己創建的每一個類,都考慮置入一個main(),其中包含了用於測試那個類的代碼。為使用一個項目中的類,我們沒必要刪除測試代碼。若進行了任何形式的改動,可方便地返回測試。這些代碼也可作為如何使用類的一個示例使用。
(4) 應將方法設計成簡要的、功能性單元,用它描述和實現一個不連續的類介面部分。理想情況下,方法應簡明扼要。若長度很大,可考慮通過某種方式將其分割成較短的幾個方法。這樣做也便於類內代碼的重復使用(有些時候,方法必須非常大,但它們仍應只做同樣的一件事情)。
(5) 設計一個類時,請設身處地為客戶程序員考慮一下(類的使用方法應該是非常明確的)。然後,再設身處地為管理代碼的人考慮一下(預計有可能進行哪些形式的修改,想想用什麼方法可把它們變得更簡單)。
(6) 使類盡可能短小精悍,而且只解決一個特定的問題。下面是對類設計的一些建議:
■一個復雜的開關語句:考慮採用"多形"機制
■數量眾多的方法涉及到類型差別極大的操作:考慮用幾個類來分別實現
■許多成員變數在特徵上有很大的差別:考慮使用幾個類
(7) 讓一切東西都盡可能地"私有"--private。可使庫的某一部分"公共化"(一個方法、類或者一個欄位等等),就永遠不能把它拿出。若強行拿出,就可能破壞其他人現有的代碼,使他們不得不重新編寫和設計。若只公布自己必須公布的,就可放心大膽地改變其他任何東西。
在多線程環境中,隱私是特別重要的一個因素--只有private欄位才能在非同步使用的情況下受到保護。
(8) 謹惕"巨大對象綜合症"。對一些習慣於順序編程思維、且初涉OOP領域的新手,往往喜歡先寫一個順序執行的程序,再把它嵌入一個或兩個巨大的對象里。根據編程原理,對象表達的應該是應用程序的概念,而非應用程序本身。
(9) 若不得已進行一些不太雅觀的編程,至少應該把那些代碼置於一個類的內部。
(10) 任何時候只要發現類與類之間結合得非常緊密,就需要考慮是否採用內部類,從而改善編碼及維護工作(參見第14章14.1.2小節的"用內部類改進代碼")。
(11) 盡可能細致地加上注釋,並用javadoc注釋文檔語法生成自己的程序文檔。
(12) 避免使用"魔術數字",這些數字很難與代碼很好地配合。如以後需要修改它,無疑會成為一場噩夢,因為根本不知道"100"到底是指"數組大小"還是"其他全然不同的東西"。所以,我們應創建一個常數,並為其使用具有說服力的描述性名稱,並在整個程序中都採用常數標識符。這樣可使程序更易理解以及更易維護。
(13) 涉及構建器和異常的時候,通常希望重新丟棄在構建器中捕獲的任何異常--如果它造成了那個對象的創建失敗。這樣一來,調用者就不會以為那個對象已正確地創建,從而盲目地繼續。
(14) 當客戶程序員用完對象以後,若你的類要求進行任何清除工作,可考慮將清除代碼置於一個良好定義的方法里,採用類似於cleanup()這樣的名字,明確表明自己的用途。除此以外,可在類內放置一個boolean(布爾)標記,指出對象是否已被清除。在類的finalize()方法里,請確定對象已被清除,並已丟棄了從RuntimeException繼承的一個類(如果還沒有的話),從而指出一個編程錯誤。在採取象這樣的方案之前,請確定finalize()能夠在自己的系統中工作(可能需要調用System.runFinalizersOnExit(true),從而確保這一行為)。
(15) 在一個特定的作用域內,若一個對象必須清除(非由垃圾收集機制處理),請採用下述方法:初始化對象;若成功,則立即進入一個含有finally從句的try塊,開始清除工作。
(16) 若在初始化過程中需要覆蓋(取消)finalize(),請記住調用super.finalize()(若Object屬於我們的直接超類,則無此必要)。在對finalize()進行覆蓋的過程中,對super.finalize()的調用應屬於最後一個行動,而不應是第一個行動,這樣可確保在需要基礎類組件的時候它們依然有效。
(17) 創建大小固定的對象集合時,請將它們傳輸至一個數組(若准備從一個方法里返回這個集合,更應如此操作)。這樣一來,我們就可享受到數組在編譯期進行類型檢查的好處。此外,為使用它們,數組的接收者也許並不需要將對象"造型"到數組里。
(18) 盡量使用interfaces,不要使用abstract類。若已知某樣東西准備成為一個基礎類,那麼第一個選擇應是將其變成一個interface(介面)。只有在不得不使用方法定義或者成員變數的時候,才需要將其變成一個abstract(抽象)類。介面主要描述了客戶希望做什麼事情,而一個類則致力於(或允許)具體的實施細節。
(19) 在構建器內部,只進行那些將對象設為正確狀態所需的工作。盡可能地避免調用其他方法,因為那些方法可能被其他人覆蓋或取消,從而在構建過程中產生不可預知的結果(參見第7章的詳細說明)。
(20) 對象不應只是簡單地容納一些數據;它們的行為也應得到良好的定義。
(21) 在現成類的基礎上創建新類時,請首先選擇"新建"或"創作"。只有自己的設計要求必須繼承時,才應考慮這方面的問題。若在本來允許新建的場合使用了繼承,則整個設計會變得沒有必要地復雜。
(22) 用繼承及方法覆蓋來表示行為間的差異,而用欄位表示狀態間的區別。一個非常極端的例子是通過對不同類的繼承來表示顏色,這是絕對應該避免的:應直接使用一個"顏色"欄位。
(23) 為避免編程時遇到麻煩,請保證在自己類路徑指到的任何地方,每個名字都僅對應一個類。否則,編譯器可能先找到同名的另一個類,並報告出錯消息。若懷疑自己碰到了類路徑問題,請試試在類路徑的每一個起點,搜索一下同名的.class文件。
(24) 在Java 1.1 AWT中使用事件"適配器"時,特別容易碰到一個陷阱。若覆蓋了某個適配器方法,同時拼寫方法沒有特別講究,最後的結果就是新添加一個方法,而不是覆蓋現成方法。然而,由於這樣做是完全合法的,所以不會從編譯器或運行期系統獲得任何出錯提示--只不過代碼的工作就變得不正常了。
(25) 用合理的設計方案消除"偽功能"。也就是說,假若只需要創建類的一個對象,就不要提前限制自己使用應用程序,並加上一條"只生成其中一個"注釋。請考慮將其封裝成一個"獨生子"的形式。若在主程序里有大量散亂的代碼,用於創建自己的對象,請考慮採納一種創造性的方案,將些代碼封裝起來。
(26) 警惕"分析癱瘓"。請記住,無論如何都要提前了解整個項目的狀況,再去考察其中的細節。由於把握了全局,可快速認識自己未知的一些因素,防止在考察細節的時候陷入"死邏輯"中。
(27) 警惕"過早優化"。首先讓它運行起來,再考慮變得更快--但只有在自己必須這樣做、而且經證實在某部分代碼中的確存在一個性能瓶頸的時候,才應進行優化。除非用專門的工具分析瓶頸,否則很有可能是在浪費自己的時間。
性能提升的隱含代價是自己的代碼變得難於理解,而且難於維護。
(28) 請記住,閱讀代碼的時間比寫代碼的時間多得多。思路清晰的設計可獲得易於理解的程序,但注釋、細致的解釋以及一些示例往往具有不可估量的價值。無論對你自己,還是對後來的人,它們都是相當重要的。如對此仍有懷疑,那麼請試想自己試圖從聯機Java文檔里找出有用信息時碰到的挫折,這樣或許能將你說服。
(29) 如認為自己已進行了良好的分析、設計或者實施,那麼請稍微更換一下思維角度。試試邀請一些外來人士--並不一定是專家,但可以是來自本公司其他部門的人。請他們用完全新鮮的眼光考察你的工作,看看是否能找出你一度熟視無睹的問題。採取這種方式,往往能在最適合修改的階段找出一些關鍵性的問題,避免產品發行後再解決問題而造成的金錢及精力方面的損失。
(30) 良好的設計能帶來最大的回報。簡言之,對於一個特定的問題,通常會花較長的時間才能找到一種最恰當的解決方案。但一旦找到了正確的方法,以後的工作就輕松多了,再也不用經歷數小時、數天或者數月的痛苦掙扎。我們的努力工作會帶來最大的回報(甚至無可估量)。而且由於自己傾注了大量心血,最終獲得一個出色的設計方案,成功的快感也是令人心動的。堅持抵制草草完工的誘惑--那樣做往往得不償失。

⑸ 從零開始學java web開發需要多長時間

1)如果每天花半天時間的話,學習java這門語言的話,周期大概一個月可以入門;

2)如果從頭走一遍,把java前端和後端涉及的知識:java前端:css+HTML+JavaScript;java後端:三大框架(SSH),資料庫(SQL);虛擬機:JVM;其它需要也要學的如:並發多線程,設計模式,數據結構,演算法等。這個周期可能就長一點了,掌握或者稍微精通的話,最起碼半年以上。

⑹ java web 開發體溫單 求思路,該如何處理

支持用HTML5,但是有個最終用戶瀏覽器版本問題。

直接做個底圖(就是體溫單背景圖),然後前面畫幾條線基本上問題也就解決了。

用JS畫的話,開銷會比較小,有很多現成的JS畫圖組件。
如果打算在伺服器端畫好再傳以圖片形式在瀏覽器顯示,也可以,但伺服器壓力大。

⑺ JFree中AreaChart圖的分類軸,如何顯示象數據軸一樣的刻度線

import java.awt.*;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.*;
import org.jfree.util.UnitType;

public class AreaChartDemo1 extends ApplicationFrame
{

public AreaChartDemo1(String s)
{
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}

private static CategoryDataset createDataset()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, "Series 1", "Type 1");
defaultcategorydataset.addValue(4D, "Series 1", "Type 2");
defaultcategorydataset.addValue(3D, "Series 1", "Type 3");
defaultcategorydataset.addValue(5D, "Series 1", "Type 4"或歲野);
defaultcategorydataset.addValue(5D, "Series 1", "Type 5");
defaultcategorydataset.addValue(7D, "Series 1", "Type 6");
defaultcategorydataset.addValue(7D, "Series 1"雀胡, "Type 7");
defaultcategorydataset.addValue(8D, "Series 1", "Type 8");
defaultcategorydataset.addValue(5D, "Series 2", "Type 1");
defaultcategorydataset.addValue(7D, "Series 2", "Type 2");
defaultcategorydataset.addValue(6D, "Series 2", "Type 3");
defaultcategorydataset.addValue(8D, "Series 2", "Type 4");
defaultcategorydataset.addValue(4D, "Series 2", "Type 5");
defaultcategorydataset.addValue(4D, "Series 2", "Type 6");
defaultcategorydataset.addValue(2D, "Series 2", "Type 7");
defaultcategorydataset.addValue(1.0D, "Series 2", "Type 8");
defaultcategorydataset.addValue(4D, "Series 3", "Type 1");
defaultcategorydataset.addValue(3D, "Series 3", "Type 2"衫喊);
defaultcategorydataset.addValue(2D, "Series 3", "Type 3");
defaultcategorydataset.addValue(3D, "Series 3", "Type 4");
defaultcategorydataset.addValue(6D, "Series 3", "Type 5");
defaultcategorydataset.addValue(3D, "Series 3", "Type 6");
defaultcategorydataset.addValue(4D, "Series 3", "Type 7");
defaultcategorydataset.addValue(3D, "Series 3", "Type 8");
return defaultcategorydataset;
}

private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createAreaChart("Area Chart", "Category", "Value", categorydataset, PlotOrientation.VERTICAL, true, true, false);
jfreechart.setBackgroundPaint(Color.white);
TextTitle texttitle = new TextTitle("An area chart demonstration. We use this subtitle as an example of what happens" +
" when you get a really long title or subtitle."
);
texttitle.setFont(new Font("SansSerif", 0, 12));
texttitle.setPosition(RectangleEdge.TOP);
texttitle.setPadding(new RectangleInsets(UnitType.RELATIVE, 0.050000000000000003D, 0.050000000000000003D, 0.050000000000000003D, 0.050000000000000003D));
texttitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
jfreechart.addSubtitle(texttitle);
CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
categoryplot.setForegroundAlpha(0.5F);
categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setDomainGridlinePaint(Color.white);
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setRangeGridlinePaint(Color.white);
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryaxis.setLowerMargin(0.0D);
categoryaxis.setUpperMargin(0.0D);
categoryaxis.addCategoryLabelToolTip("Type 1", "The first type.");
categoryaxis.addCategoryLabelToolTip("Type 2", "The second type.");
categoryaxis.addCategoryLabelToolTip("Type 3", "The third type.");
NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberaxis.setLabelAngle(0.0D);
return jfreechart;
}

public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}

public static void main(String args[])
{
AreaChartDemo1 areachartdemo1 = new AreaChartDemo1("JFreeChart: AreaChartDemo1.java");
areachartdemo1.pack();
RefineryUtilities.centerFrameOnScreen(areachartdemo1);
areachartdemo1.setVisible(true);
}
}

//////////////////////////////////////////////////

import java.awt.Dimension;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.time.*;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class XYAreaChartDemo2 extends ApplicationFrame
{

public XYAreaChartDemo2(String s)
{
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}

private static XYDataset createDataset()
{
TimeSeries timeseries = new TimeSeries("Random 1");
double d = 0.0D;
Day day = new Day();
for(int i = 0; i < 200; i++)
{
d = (d + Math.random()) - 0.5D;
timeseries.add(day, d);
day = (Day)day.next();
}

TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(timeseries);
return timeseriescollection;
}

private static JFreeChart createChart(XYDataset xydataset)
{
JFreeChart jfreechart = ChartFactory.createXYAreaChart("XY Area Chart Demo 2", "Time", "Value", xydataset, PlotOrientation.VERTICAL, true, true, false);
XYPlot xyplot = (XYPlot)jfreechart.getPlot();
DateAxis dateaxis = new DateAxis("Time");
dateaxis.setLowerMargin(0.0D);
dateaxis.setUpperMargin(0.0D);
xyplot.setDomainAxis(dateaxis);
xyplot.setForegroundAlpha(0.5F);
XYItemRenderer xyitemrenderer = xyplot.getRenderer();
xyitemrenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator("{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("#,##0.00")));
return jfreechart;
}

public static JPanel createDemoPanel()
{
return new ChartPanel(createChart(createDataset()));
}

public static void main(String args[])
{
XYAreaChartDemo2 xyareachartdemo2 = new XYAreaChartDemo2("XY Area Chart Demo 2");
xyareachartdemo2.pack();
RefineryUtilities.centerFrameOnScreen(xyareachartdemo2);
xyareachartdemo2.setVisible(true);
}
}

⑻ ECharts 多軸時如何處理0刻度線對齊的問題

開發時用echarts做雙(多)軸時發現其中某軸有負數時0刻敏漏歲度線不對齊。

最後得出最佳解決辦法
首先判斷是否有負數

如果有的話,我的配置是這樣的

最後的結果OK。

再對最大值最小值優化下應該會更橋睜好。
最後,使用webpack的注意把echarts升級到最新搜明版本。否則樣式可能會錯亂。

⑼ java消息推送,一個實時數據的web顯示該怎麼做

javaweb消息實時推送可以使用GoEasy平台。

操作如下:

  1. 到官網上注冊一個賬號,並創建一個應用,應用創建好後系統會默認為它生成兩個key: publish key和subscribe key。

  2. 前台實時訂閱及接收:需要引入goeasy.js,然後調用goeasy的subscribe方法訂閱一個channel即可,訂閱時無論是用publish key還是subscribe key都可以。通過subscribe的參數 onMessage的回調函數可以實時接收到消息。

  3. 前台實時推送:需要引入goeasy.js(如果該頁面已經引入了可不在引入),然後調用goeasy的publish方法向已訂閱的channel上推送消息即可,推送時只能用publish key。

  4. 後台實時推送:調用GoEasy Restful API, 用post方式訪問http://goeasy.io/goeasy/publish, 同時還需要帶上三個必要參數:

    appkey: publish key

    channel: 你訂閱了的channel

    content: 推送內容

  5. GoEasy的實現原理很簡單,就是推送消息的一端只負責推送,而需要接收的頁面需要預先訂閱。訂閱什麼呢?訂閱channel。往 某個channel上推送消息,客戶端就訂閱相同的channel,這樣就可以確保准確接收。通過channel我們可以自己指定哪些頁面或哪些用戶可以 接收到從這個channel上推送出來的消息。

⑽ 怎麼去掉echarts表格上的刻度線

1 首先,在Java Web項目中新建一個JSP頁寬如面穗稿someChart.jsp,引入echarts核心JS // 路徑配置 require.config({ paths: { echarts: "/scripts/echarts/build/dist" } }); 2 由於這里要用到折線圖,需要將折線圖的JS引入 require( [ 'echarts'猜巧孝, 'echa。

閱讀全文

與javaweb刻度線相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接