• ベストアンサー

Jpanelにグラフを書くプログラム

pchelp-sandboxの回答

  • ベストアンサー
回答No.1

JPanelを継承したClassを作る方法で、一例を紹介します。 1. JPanelを継承した class を1つ作ります。(hizukeの下に書けばok) public class hizuke extends JApplet implements ActionListener {  …… } class MyGraphPanel extends JPanel { } 2. 今までの p1 を このclassに変えます。 public class hizuke ... { private MyGraphPanel p1; // <-------ココのclass変更 public void init(){ //********** JPanel **********************************/ p1 = new MyGraphPanel(); // <-------ココのclass変更 3. MyGraphPanelクラスに、hizukeクラスからデータをもらうpropertyを作成します。 class MyGraphPanel extends JPanel { private int[] graphData = null; void setGraphData(int[] graphData) { this.graphData = graphData; } } 4. 実行ボタンが押されたら、データを渡してグラフ描画を依頼する命令を出します。 public class hizuke ... { …… public void actionPerformed(ActionEvent e){ …… else if(e.getSource()==bt1) { int[] graphData = {20, 24, 25, 26, 28, 24, 22, 18, 20, 22, 20, 17}; p1.setGraphData(graphData); p1.repaint(); } 5. グラフを描画する処理をMyGraphPanelに入れます。 class MyGraphPanel extends JPanel { …… public void paintComponent(Graphics g) { super.paintComponent(g); if (graphData == null) return; Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.blue); //棒グラフ for (int i = 0; i < graphData.length; i++) { g2.draw3DRect(0, i * 16, graphData[i] * 10, 10, false); } } } ※jdkの\demoの配下にsampleが沢山あるので、それらも参考にしましょう

arno
質問者

補足

グラフが表示できました!! ありがとうございます。 Jpanelを継承したクラスを別に作ればいいなんて、全く気が付きませんでした。 これを基にして必要なグラフが書けそうです。 厚かましくて申し訳ないんですがもう一つだけ助言をいただけないでしょうか。 貼り付けたソースプログラムで、Panel2のとこにいくつかボタンが配置してあります。これは年、月、日を選択できるように組んであるんですがバグがあるんです。左側の年から順に選んでいけば問題なくできるんですが、年と月を変えずに日を連続して変えたりすると、1~31とかがどんどん追加されていってしまうんです。removeAllItemsで一旦リストを消去して、直後にaddItemで書こうと思ったんですが、それだとselectItemが1で固定されて上手くいきませんでした。 色々調べてみたものの解決できなかったんですが、リストの中身を上書きしたりする方法はないんでしょうか。

関連するQ&A

  • グラフの描画

    JBuilderを使っています。  グラフを表示させたいのですが、オブジェクトに何が適しているのか調べてもわかりません。現在、SwingのLabelを使っています。半信半疑なままプログラムに取り組んでいる状態です。アドバイスをお願いします。  また、VBのように”あるオブジェクトを指定して、そこにグラフを描画する”といったことのできるメソッドなどを知りたいです。お願いします。m(_ _)m

    • ベストアンサー
    • Java
  • jpanelのタイトルの横に・・・

    どなたか知恵を貸してください。 現在、javaのswingを使って画面を作っています。画面の中のswingコンテナのパネル(jpanel)には、ボーダーを表示し、タイトルをつけています。  質問なのですが、そのタイトルのすぐ右横にjtextfieldを表示させたいのですが、どういうレイアウト手法を使ったらよいのでしょうか?仕事で作成しなければならないため、焦っています。良い知恵がありましたらアドバイスをよろしくお願いします。

  • JFrameとJPanelの最大化について

    swingでアプリケーションを作成しています。 1つのフレーム上に複数のパネルを描画する(画面遷移)アプリです。 たとえば、ログイン用のパネル、メニュー用のパネルと言ったように用意しています。 ここで問題が発生しました。 フレームの最大化ボタンを押しても、パネルが最大化されず、パネル内に配置しているボタンなども位置の調整が行われません。 フレームにレイアウトマネージャーを指定しても、パネルは最大化されないのでしょうか? フレーム自体にボタンを配置すると調整はされるのですが・・・ 今のところクラス構成としては、 フレームクラス ログインパネルクラス メニューパネルクラス データ表示パネルクラス となっています。 ログインパネルのボタンを押されたら、ログインパネルを破棄し、メニューパネルを表示するといった作りにしています。 どのパネルを表示しているときにも、フレームの最大化ボタンが押された場合にパネルの最大化も行いたいのです。 どなたかご教授願えませんでしょうか?

    • ベストアンサー
    • Java
  • グラフを「似ている」順に並べたいのですが

    VBA(エクセル2000)で組んいます 日本各地の気温の変化の関係を調べるソフトを作くろうとしていますが頓挫しています 日本のすべての県庁所在地の365日分の気温を折れ線グラフにします (47都道府県分あるので47個の折れ線グラフができます) 天気が西から東に移っていくので、温暖の変化も西から東に移っていくと仮設しています 東京のある一ヶ月を基準にして日本各地の県庁所在地の気温の似ている部分を調べたいのですが方法が分かりません 例えば 東京の5月1日から5月31日のグラフは静岡の4月20日から5月20日までのグラフに一番似ている 東京の5月1日から5月31日のグラフは長野の4月10日から5月10日までのグラフに二番目に似ている 東京の5月1日から5月31日のグラフは群馬の5月10日から6月10日までのグラフに三番目に似ている などのように東京の5月1日から31日までの一ヶ月間を他の46個のグラフのどこかの一ヶ月間から似ている部分を探し出して順番をつけるソフトを作りたいと思っています グラフを「似ている」順に並べる可能でしょうか? そのような似ているグラフを並べ替えるプログラムの手法、または学習しなくてはならないことなど、どのようなことでもよいので 教えていただきたいです 今は目視して似ている順にグラフを並べ替えていますが何とかVBAで自動化したいと思っております よろしくお願いします

  • JComboBoxの横幅が変更出来ません

    こんにちは、jdk1.4でswingアプリケーションを作っています。 JPanal2つをBorderLayoutで配置し、WEST側JPanelにJComboBoxその他のコンポーネントを入れて、CENTER側では、コンポーネントは置かずにJPanelに絵を描いています。 全体のサイズを600×400としている時、JComboBoxが400近い横幅をとるので、右の画像表示スペースがかなり狭くなってしまいました。 そこで、それぞれのJPanelをJScrollPaneに埋め込むことにして、なんとか、右の画像表示枠を大きくすることには成功したのですが、JComboBoxのために、いつも左パネルが横スクロール状態になるのが不満です。 JComboBoxに登録している文字列は最大でも半角25文字で、JComboBox内での 半分しか占めていないのに、なぜこんなに大きな幅になるのでしょう? JComboBoxに対して以下の設定も試してみましたが、大きさは変化しませんでした。 setPreferredSize(new Dimension(200,20)); setMaximumSize(new Dimension(200,20)); JComboBox横幅の変更方法に妙案が有れば教えて頂けませんでしょうか。

    • ベストアンサー
    • Java
  • .net chartでの積層棒グラフの接続・系列線

    VB2010(.net framework4.0)で、.net chartコントロールを使用し、グラフをブラウザに表示するプログラムを作成しております。 作成するグラフの中に、積層棒グラフ(積み重ね棒グラフ)があり、その各系列を結ぶ線(接続線や系列線と呼ばれるもの)を描画したいのですが、.net chartコントロールには該当するプロパティが無い様に見受けられます。(Webで色々と探ってみましたが、マッチしたページが見つかりませんでした) 折線グラフを重ねることでそれっぽい形にはなるのですが、綺麗には描画できず、この質問に至っております。 「実はこのプロパティで実現できる」や、「こうやって折れ線で描画したら綺麗にできる」など、お知恵をお貸し頂ければと思います。 よろしくお願いします。

  • ドロップダウンリスト項目の内容を連動させるには

    JComboBoxが3つあります。この3つのJComboBoxは連動しています 例えば3つ(分類が3つ) 食費     肉類         牛肉         豚肉         鶏肉 食費     魚介類           さんま           さば           ひらめ 例えば2つ(分類が2つ) 衣類     下着     靴下     帽子 例えば2つ(分類が2つ) 教養娯楽       映画       書籍       DVD このようにJComboBoxの項目の内容が第1カテゴリ⇒第2カテゴリに連動して表示 されるようなswingプログラムはどうやって作成すればいいでしょうか わかる方はソースコードを載せて下さい※JComboBoxが3つあります

    • ベストアンサー
    • Java
  • エクセルで折れ線グラフを書くとき

    お世話になります。 エクセルで折れ線グラフを書くときに、X軸のデーターが1から30までありますが、1番目のグラフで1から15まで、2番目のグラフで16から30までのデーターを表示させるのですが、2番目のグラフのX軸目盛りを16と表示させたいのですが、1と表示されます。 16と表示させる方法はどうしたらいいでしょうか。

  • VB6.0で、グラフを複数表示させたいのですが。

    VB6.0で、Form1にある描画ボタンを押すたびに、 Form2のグラフを画面上に追加表示したいのですが、 同じフォームを複数表示させる方法がわかりません。 ご存知の方教えてください。 よろしくお願いします。 Form2は添付ファイルのような感じです。 ピクチャーボックスにグラフを描画します。

  • グラフ表示の仕方 教えてください

    随時データを取得して、それを折れ線グラフで描画したいと思っています。 また一定期間をスクロールさせて表示できるようにしたいのですが、ピクチャボックスとスクロールバーを使用すれば出来るでしょうか? アドバイスまたはサンプルのプログラム等がありましたら教えて下さい。