2012年1月21日土曜日

名前の一括変更


名前の一括変更 : Alt + Shift + R

HTMLEditorKit 基本情報

一行ずつ処理するのに便利

http://java.sun.com/j2se/1.3/ja/docs/ja/api/javax/swing/text/html/HTMLEditorKit.html


クラス HTMLEditorKit.ParserCallback
handleStartTag  は、開始タグと終了タグを持つタグを取得する。
handleEndTag   は、開始タグと終了タグを持つタグを取得する。
handleSimpleTag は、終了タグを持たないタグを取得する。
handleText    は、HTMLの文字列の取得・処理を行います。
handleComment  は、コメントを取得する。
handleEndOfLineString は、ストリームの末尾を取得する。
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.ParserDelegator;
import java.io.*;

public class HtmlParser{

 public static void main(String[] args){
  HtmlParser p = new HtmlParser();
  p.exec();
 }

 public void exec() {
  Reader reader;
  try {

   FileInputStream is = new FileInputStream("E:/html/text.html");
   InputStreamReader in = new InputStreamReader(is, "SJIS");

   reader = new BufferedReader(in);

   MyParserCallback cb = new MyParserCallback();
   ParserDelegator pd = new ParserDelegator();
   pd.parse(reader, cb, true);
   reader.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 class MyParserCallback extends HTMLEditorKit.ParserCallback {
  public void handleStartTag(HTML.Tag tag, MutableAttributeSet attr, int pos){
   System.out.println("スタートタグが呼ばれました");

  }
  public void handleText(char[] data, int pos) {
   System.out.println( new String(data) );
        }

  public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attr,int pos) {
   System.out.println("--------------  終了タグを持たないタグが呼ばれました");
  }
 }

}

2011年11月6日日曜日

最初のプログラム

ディスクをE:\にjavaフォルダを作成する。

helloworld.javaファイルを作る。
テキストエディターでファイルを作成する

public class helloworld {
    public static void main (String[] args) {
        System.out.println("Hello World !!");
    }
}
コマンドプロンプトを起動させて、E:\javaに移動する。

コンパイルする

E:\java>javac helloworld.java

helloworld.class が作成されました。

実行して確かめてみる。

E:\java>java helloworld
Hello World !!

うまく表示できました。

テキストエディターはTeraPadを使って、
文字コードはUTF-8N  改行コードはCR-LFで作成しました。




開発環境構築

最初の状態の確認


以前、インストールしたのが入っているようです。
まだ、設定していないのでjavac コマンドは使えない。

Java SE Development Kit 7 Downloads をダウンロードしてくる。
jdk-7u1-windows-i586.exe

インストーラにしたがってインストールする。

インストール後の確認

インストールフォルダに移動する。
C:\Windows\system32>cd ../../
C:\>cd "Program Files\Java\jdk1.7.0_01\bin"
javac コマンドを打ってみる
オプションを指定していないのでメッセージが出るが、使えるようです。

どこの場所からでjavacコマンドが使えるようにpathを設定する。

末尾に下記の一文を加える
;C:\Program Files\Java\jdk1.7.0_01\bin

再起動して確かめる。
どこからでも、javacコマンドが使えるようです。



2011年9月13日火曜日

複数フレーム

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class NewFrame extends JFrame {

 public NewFrame(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンで子ウインドウも閉じる"));

  pack();

  System.out.println(Toolkit.getDefaultToolkit().getScreenSize());
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  System.out.println(size.width);
  setLocation(size.width / 2, size.height / 2);
  setVisible(true);
 }
}

class NewFrame2 extends JFrame {

 public NewFrame2(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンを押しても親ウインドウは閉じない"));

  pack();
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  setLocation(size.width / 2 + 30, size.height / 2 + 30);
  setVisible(true);
 }
}

class NewFrame3 extends JFrame {

 public NewFrame3(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンを押しても親ウインドウは閉じない"));

  pack();
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  setLocation(size.width / 2 + 60, size.height / 2 + 60);
  setVisible(true);
 }
}

public class swingTestSlider {
 public static void main(String[] args) {
  new NewFrame("親フレーム");
  new NewFrame2("子ウインドウ");
  new NewFrame3("子ウインドウ2");
 }
}

setDefaultCloseOperation :JFrameで有効 ApplicationFrameでは使えない
EXIT_ON_CLOSE クローズボタンのクリック時にプログラムの実行を終了する
DISPOSE_ON_CLOSE  クローズボタンのクリック時に JFrame を破棄する
DO_NOTHING_ON_CLOSE クローズボタンをクリックしても何もしない
HIDE_ON_CLOSE クローズボタンのクリック時にウィンドウを隠す

Dimension getSize ( ) フレームの大きさを獲得します

棒グラフ-IntervalXYDataset

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class swingTestSlider extends ApplicationFrame {

 private static class DemoPanel extends JPanel implements ChangeListener {

  JSlider slider;
  ValueAxis xAxis;
  XYSeries series;
  
  public DemoPanel() {
   super(new BorderLayout());
   
   IntervalXYDataset dataset = createDataset();
   JFreeChart chart = createChart(dataset);
   
   ChartPanel chartPanel = new ChartPanel(chart);
   chartPanel.setPreferredSize(new java.awt.Dimension(600, 270));

   add(chartPanel);

   JPanel panel = new JPanel(new BorderLayout());
   
   this.slider = new JSlider();
   slider.setMaximum(series.getItemCount());
   slider.setValue(series.getItemCount());
   
   this.slider.addChangeListener(this);
   panel.add(this.slider);
   add(panel, BorderLayout.SOUTH);
  }

  private JFreeChart createChart(IntervalXYDataset dataset) {
   final JFreeChart chart = ChartFactory.createXYBarChart(
     "IntervalXYDataset", "X", false, "Y", dataset,
     PlotOrientation.VERTICAL, true, true, false);
   
   XYPlot plot = (XYPlot) chart.getPlot();

   NumberAxis numberaxis = (NumberAxis) plot.getDomainAxis();
   numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
   
   xAxis = plot.getDomainAxis();
   xAxis.setAutoRange(false);
   xAxis.setRange(80, 100);
   
   plot.setRenderer(new XYBarRenderer());
   XYBarRenderer renderer = (XYBarRenderer) chart.getXYPlot().getRenderer();
   renderer.setMargin(0.1);;

   return chart;
  }
  /*
   * グラフデータを作る
   */
  private IntervalXYDataset createDataset() {
   
   series = new XYSeries("XYSeriesデータ");
   
   for ( int i = 1 ; i < 101 ; i++){
    series.add(i, 100+i);
   }

   final XYSeriesCollection dataset = new XYSeriesCollection(series);
   return dataset;
  }//グラフデータを作るここまで

  @Override
  public void stateChanged(ChangeEvent event) {
   xAxis.setRange(slider.getValue()-20, slider.getValue());
   //System.out.println(slider.getValue());
  }

 }//class MakePanel ここまで

 public swingTestSlider(String title) {
  super(title);
  setContentPane(new DemoPanel());
 }

 public static JPanel createDemoPanel() {
  return new DemoPanel();
 }

 public static void main(String[] args) {
  swingTestSlider demo = new swingTestSlider("XYBarChart");
  demo.pack();
  RefineryUtilities.centerFrameOnScreen(demo);
  demo.setVisible(true);
 }

}

2011年9月12日月曜日

slider - 目盛りの設定

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.BorderLayout;

public class JSliderTest1 extends JFrame implements ChangeListener {

 JSlider slider;
 JLabel label;

 JSliderTest1(String string) {
  super(string);

  slider = new JSlider();

  slider.setMaximum(200); /* スライダの最大値 */
  slider.setMinimum(0); /* スライダの最小値 */
  slider.setValue(150); /* スライダの値 */
  slider.setMajorTickSpacing(50); /* 大きな目盛りの間隔 */
  slider.setMinorTickSpacing(10); /* 小さな目盛りの間隔 */
  slider.setPaintTicks(true);     /* 目盛りを表示 */
  slider.setPaintLabels(true);    /* ラベルを表示 */
  slider.addChangeListener(this);

  JPanel panel = new JPanel();
  panel.add(slider);

  label = new JLabel();
  label.setText("スライダーの値:" + slider.getValue());

  getContentPane().add(panel, BorderLayout.CENTER);
  getContentPane().add(label, BorderLayout.SOUTH);
 }

 public static void main(String[] args) {
  JSliderTest1 frame = new JSliderTest1("スライダーテスト");
  frame.pack();
  frame.setVisible(true);
 }

 @Override
 public void stateChanged(ChangeEvent arg0) {
  // TODO 自動生成されたメソッド・スタブ
  label.setText("スライダーの値:" + slider.getValue());
 }
}