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());
 }
}

slider - 値の設定


slider.setValue(300);

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(500); /* スライダの最大値 */
  slider.setMinimum(0); /* スライダの最小値 */

  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());
 }
}

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.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());
 }
}

2011年9月10日土曜日

棒の幅を設定する


 
表示領域を1として小数点以下の数値で幅を設定する
renderer.setMaximumBarWidth(0.01); 

棒の間隔を設定


renderer.setItemMargin(0);

棒のグラデーションを無効にする


renderer.setBarPainter(new StandardBarPainter());

棒グラフの色・影の設定


import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;

import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;

public class swingTest {

 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  // ウインドウの表示場所とサイズ指定
  frame.setBounds(10, 10, 600, 400);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  //グラフ作成
  // データ設定
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(1000, "東京支店", "1月");
  dataset.addValue(2500, "ニューヨーク支店", "1月");
  dataset.addValue(1500, "ロンドン支店", "1月");
  dataset.addValue(1200, "東京支店", "2月");
  dataset.addValue(2900, "ニューヨーク支店", "2月");
  dataset.addValue(1400, "ロンドン支店", "2月");

  // グラフを生成する
  JFreeChart chart = ChartFactory.createBarChart("グラフタイトル", "店舗名", "売上額",
    dataset, PlotOrientation.VERTICAL, true, false, false);
  
  CategoryPlot plot = chart.getCategoryPlot();
  BarRenderer renderer = (BarRenderer)plot.getRenderer();

  // 影の設定
  renderer.setShadowVisible(false);
  
  // シリーズの色設定
  renderer.setSeriesPaint(0, ChartColor.RED);
  renderer.setSeriesPaint(1, ChartColor.BLUE);
  renderer.setSeriesPaint(2, ChartColor.YELLOW);
  
  //パネルにグラフを追加
  ChartPanel cpanel = new ChartPanel(chart);
  
  contentPane.add(cpanel, BorderLayout.CENTER);
  // ウィンドウを表示
  frame.setVisible(true);

 }
}

最初の棒グラフ


import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class swingTest {

 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  // ウインドウの表示場所とサイズ指定
  frame.setBounds(10, 10, 600, 400);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  //グラフ作成
  // データ設定
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.addValue(1000, "東京支店", "1月");
  dataset.addValue(2500, "ニューヨーク支店", "1月");
  dataset.addValue(1500, "ロンドン支店", "1月");
  dataset.addValue(1200, "東京支店", "2月");
  dataset.addValue(2900, "ニューヨーク支店", "2月");
  dataset.addValue(1400, "ロンドン支店", "2月");

  // グラフを生成する
  JFreeChart chart = ChartFactory.createBarChart("グラフタイトル", "店舗名", "売上額",
    dataset, PlotOrientation.VERTICAL, true, false, false);

  //パネルにグラフを追加
  ChartPanel cpanel = new ChartPanel(chart);
  
  contentPane.add(cpanel, BorderLayout.CENTER);
  // ウィンドウを表示
  frame.setVisible(true);

 }
}

2011年9月8日木曜日

JTableでの数値のソート

import java.awt.BorderLayout;
import java.awt.Container;
import java.util.Comparator;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(320, 160);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);
  //frame.setBounds(2500, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();
  // ボタンのインスタンスを生成
  JButton button = new JButton("button");
  contentPane.add(button, BorderLayout.SOUTH);
  
  String[][] tabledata = {
       {"10", "1" , "cfd"},
       {"1", "111" , "ade"},
       {"9", "45" , "ree"},
       {"3", "33" , "brt"}};

  String[] columnNames = { "データ1", "データ2" ,"データ3"};
  
  DefaultTableModel tableModel = new DefaultTableModel(columnNames,0);
  TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(tableModel);
  JTable table = new JTable(tableModel);

  sorter.setComparator(0, new Comparator<String>() {
   public int compare(String a, String b) {
    return Integer.parseInt(a) - Integer.parseInt(b);
   }
  });

  table.setRowSorter(sorter);

  for (int i = 0; i < tabledata.length; i++) {
   tableModel.addRow(tabledata[i]);
  }

  JScrollPane scroll = new JScrollPane(table);
  
  contentPane.add(scroll, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);
  
 }
 
}
一番左の行で数値のソートが可能です。
sorter.setComparator(0new Comparator<String>() の行で0を1にすれば、
データ2で数値のソートができる。
 

JTableでのソートを可能にする。

下記の一文を加えるだけで可能になる。

table.setAutoCreateRowSorter(true);

2011年9月7日水曜日

URLを指定してブラウザで開く

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class BrawserTest {

    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        try {
            Desktop desktop = Desktop.getDesktop();

            desktop.browse(new URI("http://google.co.jp"));
            desktop.browse(new URI("http://www.yahoo.co.jp"));

        } catch (URISyntaxException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

クリックされたセルの値を取得

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(300, 150);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);// 中央に表示
  // frame.setBounds(200, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  String[][] tabledata = { { "名前1", "10" }, { "名前2", "11" },
    { "名前3", "12" }, { "名前4", "13" } };

  String[] columnNames = { "名前", "年齢" };
  //DefaultTableModel を作成します。
  DefaultTableModel tableModel = new DefaultTableModel(tabledata,columnNames);

  //jテーブルを作成
  final JTable table = new JTable(tableModel);
  
  //テーブルにマウスイベントを付ける
  table.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    // 選択行の行番号を取得します
    int row = table.getSelectedRow();
    int col = table.getSelectedColumn();
    
    String s = (String) table.getValueAt(row,col);
    
    System.out.println("行" + row + "::" + "列" + col + "::" + s);
   }
  });
  
  //jスクロールパネルを作成しテーブルを追加
  JScrollPane sp = new JScrollPane(table);
  //jスクロールパネルのサイズを指定
  sp.setPreferredSize(new Dimension(250, 70));
  //jパネルを作成
  JPanel p = new JPanel();
  //Jパネルにjスクロールパネルを追加
  p.add(sp);
  //フレームにJパネルを追加
  contentPane.add(p, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);
 }
}

クリックされたセルを取得

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(300, 150);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);// 中央に表示
  // frame.setBounds(200, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  String[][] tabledata = { { "名前1", "10" }, { "名前2", "11" },
    { "名前3", "12" }, { "名前4", "13" } };

  String[] columnNames = { "名前", "年齢" };
  //DefaultTableModel を作成します。
  DefaultTableModel tableModel = new DefaultTableModel(tabledata,columnNames);

  //jテーブルを作成
  final JTable table = new JTable(tableModel);
  
  //テーブルにマウスイベントを付ける
  table.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    // 選択行の行番号を取得します
    int row = table.getSelectedRow();
    int col = table.getSelectedColumn();

    System.out.println("行" + row + "::" + "列" + col);
   }
  });
  
  //jスクロールパネルを作成しテーブルを追加
  JScrollPane sp = new JScrollPane(table);
  //jスクロールパネルのサイズを指定
  sp.setPreferredSize(new Dimension(250, 70));
  //jパネルを作成
  JPanel p = new JPanel();
  //Jパネルにjスクロールパネルを追加
  p.add(sp);
  //フレームにJパネルを追加
  contentPane.add(p, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);
 }
}

テーブルにマウスイベントを付ける

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(300, 150);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);// 中央に表示
  // frame.setBounds(200, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  String[][] tabledata = { { "名前1", "10" }, { "名前2", "11" },
    { "名前3", "12" }, { "名前4", "13" } };

  String[] columnNames = { "名前", "年齢" };
  //DefaultTableModel を作成します。
  DefaultTableModel tableModel = new DefaultTableModel(tabledata,columnNames);

  //jテーブルを作成
  final JTable table = new JTable(tableModel);
  
  //テーブルにマウスイベントを付ける
  table.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    System.out.println("テーブルがクリックされました");
   }
  });
  
  //jスクロールパネルを作成しテーブルを追加
  JScrollPane sp = new JScrollPane(table);
  //jスクロールパネルのサイズを指定
  sp.setPreferredSize(new Dimension(250, 70));
  //jパネルを作成
  JPanel p = new JPanel();
  //Jパネルにjスクロールパネルを追加
  p.add(sp);
  //フレームにJパネルを追加
  contentPane.add(p, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);
 }
}

テーブルに行を追加

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(300, 150);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);// 中央に表示
  // frame.setBounds(200, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  String[][] tabledata = { { "名前1", "10" }, { "名前2", "11" },
    { "名前3", "12" }, { "名前4", "13" } };

  String[] columnNames = { "名前", "年齢" };
  //DefaultTableModel を作成します。
  DefaultTableModel tableModel = new DefaultTableModel(tabledata,columnNames);

  //jテーブルを作成
  JTable table = new JTable(tableModel);
  
  //jスクロールパネルを作成しテーブルを追加
  JScrollPane sp = new JScrollPane(table);
  //jスクロールパネルのサイズを指定
  sp.setPreferredSize(new Dimension(250, 70));
  //jパネルを作成
  JPanel p = new JPanel();
  //Jパネルにjスクロールパネルを追加
  p.add(sp);
  //フレームにJパネルを追加
  contentPane.add(p, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);
  
  //テーブルに値を追加
  tableModel.addRow(new String[] {"名前5", "14"});

 }

}

テーブルの作成

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  frame.setSize(300, 150);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);// 中央に表示
  // frame.setBounds(200, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();

  String[][] tabledata = { { "名前1", "10" }, { "名前2", "11" },
    { "名前3", "12" }, { "名前4", "13" } };

  String[] columnNames = { "名前", "年齢" };
  //DefaultTableModel を作成します。
  DefaultTableModel tableModel = new DefaultTableModel(tabledata,columnNames);

  JTable table = new JTable(tableModel);

  //jスクロールパネルを作成しテーブルを追加
  JScrollPane sp = new JScrollPane(table);
  //jスクロールパネルのサイズを指定
  sp.setPreferredSize(new Dimension(250, 70));
  //jパネルを作成
  JPanel p = new JPanel();
  //Jパネルにjスクロールパネルを追加
  p.add(sp);
  //フレームにJパネルを追加
  contentPane.add(p, BorderLayout.CENTER);

  // ウィンドウを表示
  frame.setVisible(true);

 }

}

ボタンの表示

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  // mainFrame.setSize(320, 160);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);
  frame.setBounds(2500, 200, 300, 150);

  // JFrameよりContentPaneを取得
  Container contentPane = frame.getContentPane();
  // ボタンのインスタンスを生成
  JButton button = new JButton("button");
  // ボタンをフレームに追加
  contentPane.add(button, BorderLayout.SOUTH);

  // ウィンドウを表示
  frame.setVisible(true);

 }

}

フレームの作成

import javax.swing.JFrame;

public class swingTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  JFrame frame = new JFrame("サンプル");

  // Xボタンが押された時の挙動
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // ウインドウサイズ
  // mainFrame.setSize(320, 160);
  // ウインドウの表示場所とサイズ指定
  frame.setLocationRelativeTo(null);
  frame.setBounds(2500, 200, 300, 150);
  // ウィンドウを表示
  frame.setVisible(true);

 }

}

2011年9月5日月曜日

パレットの表示

テキストエディッタの右上の三角をクリックすると開く

JFrame ビジュアル・クラスの作成

プロジェクトを選択して
新規
その他
Swing
JFrame ビジュアル・クラスを選択して次へボタンをクリック
クラス名を入力して完了ボタンをクリックする。

VisualEditorのインストール

新規ソフトウェアのインストールで下記URLを指定してもインストールできなかったので
http://download.eclipse.org/tools/ve/updates/1.4/

違う方法をメモ
http://www.eclipse.org/archived/から
Visual editor をインストールして解凍してできるフォルダの中の
downloads/drops/1.4.0/R200909301124 フォルダのVE-Update-1.4.0.zipを使う
新規ソフトウェアのインストール画面の作業対象の追加ボタンをクリックして、
アーカイブをクリックして VE-Update-1.4.0.zipを選択する。

2011年9月3日土曜日

ファイルの中身を一行ずつ表示

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class First {
	public static void main(String[] args) {
		String path = "/pass";

		// FileReaderオブジェクトfを生成
		try {
			FileReader in = new FileReader(path);

			// (3)BufferedReaderオブジェクトbrを生成
			BufferedReader br = new BufferedReader(in);
			String line;
			while ((line = br.readLine()) != null) {
				System.out.println(line);
			}
			br.close();
			in.close();

		} catch (FileNotFoundException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}
}

フォルダ内のファイルを表示する

import java.io.File;
public class First {
	public static void main(String[] args) {
		//フォルダのパスを表示
		String path = "/pass";
		
		//Fileクラスのインスタンスを作成
		File dir = new File(path);
		//フォルダの中身を配列に入れる
		String[] directory_list = dir.list();
		
		for (int i = 0; i < directory_list.length; i++) {
			//ファイル・ディレクトリ一覧の表示
			System.out.println(directory_list[i]);
		}
	}
}

最後の文字を削除する

文字列の中の文字を指定して探して最後に現れた場所を指定して削除する。

最後の,を削除する場合
public class First {
	public static void main(String[] args) {
		String str = new String("a,b,c,d,e,");

		// 文字列をバッファーに入れる
		StringBuffer s = new StringBuffer(str);
		// 最後にマッチしたインデックスを取得
		int index = s.lastIndexOf(",");
		
		// インデクスを指定して削除して表示
		System.out.println(s.deleteCharAt(index));
	}
}
結果
a,b,c,d,e

java.net.sockettimeoutexception: read timed out

ネットワークのプロパティ

sun.net.client.defaultReadTimeout (デフォルト: -1) ;


()内にミリ秒で時間を長めに設定する。

2011年9月1日木曜日

指定したインデックスのオブジェクトを取得する

import java.util.LinkedList;
import java.util.List;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		List l = new LinkedList();
		
		//オブジェクトの追加
	    l.add("Sun");
	    l.add("Mercury");
	    l.add("Venus");
	    	  
	    //指定したインデックスのオブジェクトを取得する
	    System.out.println(l.get(1));
	}

}

出力結果
Mercury

オブジェクトを追加する

import java.util.LinkedList;
import java.util.List;



public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		List l = new LinkedList();
		
		//オブジェクトの追加
	    l.add("Sun");
	    l.add("Venus");
	    
	    //指定したインデックスにオブジェクトを挿入する
	    l.add(1, "Mercury");
	  
	    //Listの中身を表示
	    System.out.println(l);
	}

}

出力結果
[Sun, Mercury, Venus]

空かどうか検査する

import java.util.ArrayList;
import java.util.Collection;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Collection c = new ArrayList();
		
		//オブジェクトの追加
	    c.add("Sun");
	    c.add("Mercury");
	    c.add("Venus");
	  
	    //空かどうか検査する
	    System.out.println("空ですか?" + c.isEmpty());
	}
}

出力結果
空ですか?false

オブジェクトの個数を取得

import java.util.ArrayList;
import java.util.Collection;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Collection c = new ArrayList();
		
		//オブジェクトの追加
	    c.add("Sun");
	    c.add("Mercury");
	    c.add("Venus");
	  
	    //オブジェクトの個数を取得する。
	    System.out.println("オブジェクトの個数:" + c.size());
	}

}


出力結果
オブジェクトの個数:3

オブジェクトが含まれているか検査する

import java.util.ArrayList;
import java.util.Collection;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Collection c = new ArrayList();
		
		//オブジェクトの追加
	    c.add("Sun");
	    c.add("Mercury");
	    c.add("Venus");
	  
	    //オブジェクトが含まれているか検査する
	    System.out.println("コレクションの中身:" + c);
	    System.out.println("Sunを 検査:" + c.contains("Sun"));
	    System.out.println("Earthを検査:" + c.contains("Earth"));
	}

}

出力結果
コレクションの中身:[Sun, Mercury, Venus]
Sunを 検査:true
Earthを検査:false

コレクションからオブジェクトを削除する

import java.util.ArrayList;
import java.util.Collection;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Collection c = new ArrayList();
		
		//オブジェクトの追加
	    c.add("Sun");
	    c.add("Mercury");
	    c.add("Venus");

	    //オブジェクトの削除
	    c.remove("Sun");
	    
	    //コレクションの中身を表示する
	    System.out.println(c.toString());
	}

}

出力結果
[Mercury, Venus]

コレクションにオブジェクトを追加する

import java.util.ArrayList;
import java.util.Collection;

public class collection_test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Collection c = new ArrayList();
		
		//オブジェクトの追加
	    c.add("Sun");
	    c.add("Mercury");
	    c.add("Venus");
	    
	    //コレクションの中身を表示する
	    System.out.println(c.toString());
	}

}

出力結果
[Sun, Mercury, Venus]

2011年8月31日水曜日

文字列の連結

+ で連結
String name = "java" + "!";


 += で末尾連結
String name = "java";
name += "!";

String.concatメソッドで末尾連結
String name = "java";
name.concat("!");

文字列分割

String str1 = new String("DATE : 2011/08/30 00:00現在");
String[] str1Ary = str1.split(" ");
 
半角の空白を区切り文字として分割して配列に入れる。 

行番号の表示

ウインドウ->設定 を選択
一般->テキスト・エディター から
行番号の表示にチェックを入れて OKボタンを押す。

文字列の置換

引数1:検索文字列
引数2:置換文字列

置換された文字列

String name = "【文字列】";
name = name.replaceAll("【","");
System.out.println(name);

結果
文字列】

正規表現で指定

String tvName = chData.replaceAll("\\(.*?\\)", "");
()の中の文字を置き換え

参考サイト

jsoup ホーム


僕はJava者
http://d.hatena.ne.jp/it-tech-dm/20110123/1295774869

#junki::acoustic
http://d.hatena.ne.jp/jonki/20110430

2011年8月30日火曜日

2つ目のタグを指定

String title = doc.getElementsByTag("b").get(1).text();

2つ目のbタグで囲まれたテキストを指定

外部jarの追加

プロジェクト->プロパティ
左のjavaのビルド・パスを選択して、ライブラリーの外部jarの追加から、
ダウンロードしたjarファイルを選択する。

2011年3月8日火曜日

コンソールに文字を出力

System.out.println("完了");

凡例の文字化け対策

 
レガシーテーマを設定することで、文字化けを回避します。
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.StandardChartTheme;
import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.ChartUtilities;
import java.io.File;
import java.io.IOException;

import java.awt.*;
import java.applet.*;


public class HelloJava extends Applet {
 public void paint(Graphics g) {
  DefaultPieDataset data = new DefaultPieDataset();
  
     data.setValue("1月", 10);
     data.setValue("2月", 20);
     data.setValue("3月", 30);
     data.setValue("その他", 40);

     ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
     
     JFreeChart chart = 
      ChartFactory.createPieChart("統計データ", data, true, false, false);
     
     File file = new File("./chart.png");
     try {
       ChartUtilities.saveChartAsPNG(file, chart, 500, 500);
     } catch (IOException e) {
       e.printStackTrace();
     }

 }
}

最初のグラフ

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.ChartUtilities;
import java.io.File;
import java.io.IOException;

import java.awt.*;
import java.applet.*;

public class HelloJava extends Applet {
 public void paint(Graphics g) {
  DefaultPieDataset data = new DefaultPieDataset();
  
     data.setValue("1月", 10);
     data.setValue("2月", 20);
     data.setValue("3月", 30);
     data.setValue("その他", 40);

     JFreeChart chart = 
      ChartFactory.createPieChart("統計データ", data, true, false, false);
     
     File file = new File("./chart.png");
     try {
       ChartUtilities.saveChartAsPNG(file, chart, 500, 500);
     } catch (IOException e) {
       e.printStackTrace();
     }

 }
}
作成したグラフを画像ファイルとして保存しています。 グラフ画像ファイルはプロジェクトフォルダーのbinフォルダの中にあります。

Eclipseへ外部JARを設定

プロジェクト から プロパティーを選択します。


外部JARの追加をクリックします。


jcommon-x.x.xx.jar jfreechart-x.x.xx.jar を選択して
開くをクリックします。

JFreeChart の準備

JFreeChartは無料で利用できるjavaのライブラリです。
グラフを扱うのに便利なライブラリです。
入手先:http://www.jfree.org/jfreechart/

 DOWNLOAD をクリックして、 SourceForge download page. をクリックします。

Download jfreechart-1.0.13.zip (7.7 MB) をクリックするとダウンロードが開始します。
ダウンロード終了後解凍します。

最初のアプレット

javaのソースコード:HelloJava.java
import java.awt.*;
import java.applet.*;

public class HelloJava extends Applet {
 public void paint(Graphics g) {
  g.drawString("Hello World",20,20);
 } 
}
HTML ファイルの作成:HelloJava.html
<html>
<title>Hello World Applet</title>
<body>
<applet code="HelloJava" width=100 height=100></applet>
</body>
</html>
Eclipse で開発
実行ボタンを押して確認します。
html ファイルで指定した場所にHelloJava.classファイルを置く。
HelloJava.classファイルはワークスペースのフォルダの中のプロジェクト名のフォルダの中の
bin フォルダにある。
ワークスペースの場所の確認は
ウインドウ->設定->一般-> 開始およびシャットダウン で確認できます。

ブラウザでアプレットが利用できなかったが、
アドオンを全て無効にしてみたらうまく表示出来ました。