●もやもやしているところ

PPTと見比べながらなんとか作っていましたが、果たしてそれでいいのか不安でした。本来なら、PPTは確認程度で、自分ですらすら書けるべきなのだろうなと、思いました。それから、デバック機能に大変助けられました。リンクの部分が、PPTをみながら作ったものの、どういう自体が起きてそうなっているのかはあまり理解できていません。




●中間課題を作ってみての感想
難しかったです。PPTを見てなんとか作りました。ボタンを作って作動するようにするところが、一番楽しかったです!
クラス、インスタンス、イベント、イベントリスナーの概念を解説します。


●クラス
オブジェクトを作るための設計図のようなもの。ある特定の機能を提供するソフトウェアの部品の名前。

●インスタンス
実際に作られるオブジェクト

●イベント
マウスやリターンが押される、ボタンが押される、ウィンドウが閉じられるなどの出来事のこと。

●イベントリスナー
イベントの受け取り手。送られるイベントに対応して、イベントリスナーが部品として設定される。
まずインポート↓↓↓
~~~~~~~~~~~~~~~
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JButton;
~~~~~~~~~~~~~~~



HTMLViewerクラス↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class HTMLViewer implements ActionListener, HyperlinkListener{
JTextField addrField;
JEditorPane htmlPane;
JButton Clickhome;
JButton Clicksfc;
JButton Clicksfs;
JButton Clickmyhp;

public HTMLViewer(){

JFrame frame = new JFrame("Simple HTML Viewer");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.addWindowListener(
new WindowAdapter() {
public void windowClosed(WindowEvent e){
System.exit(0);
}
}
);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


URL入力フォームの設定↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~
addrField = new JTextField("http://");
addrField.addActionListener(this);
~~~~~~~~~~~~~~~~~~~~~~~



WEBページ表示画面の設定↓↓↓
~~~~~~~~~~~~~~~~
htmlPane = new JEditorPane();
htmlPane.setEditable(false);
htmlPane.setContentType("text/html");
htmlPane.addHyperlinkListener(this);
~~~~~~~~~~~~~~~~~~




4種類のボタンを作り、ボタンを押すと作動するよう設定↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Clickhome = new JButton("HOME");
Clickhome.addActionListener(new HomeActionListener());
Clicksfc = new JButton("SFC");
Clicksfc.addActionListener(new sfcActionListener());
Clicksfs = new JButton("SFC-SFS");
Clicksfs.addActionListener(new sfsActionListener());
Clickmyhp = new JButton("MyHomePage");
Clickmyhp.addActionListener(new myhpActionListener());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



オブジェクトのレイアウト↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~
JPanel topContainer = new JPanel();
topContainer.setLayout(new GridLayout(1,4));
topContainer.add(Clickhome);
topContainer.add(Clicksfc);
topContainer.add(Clicksfs);
topContainer.add(Clickmyhp);

JPanel bottomContainer = new JPanel();
bottomContainer.setLayout(new BorderLayout());
bottomContainer.add(addrField, BorderLayout.NORTH);
bottomContainer.add(new JScrollPane(htmlPane), BorderLayout.CENTER);

frame.getContentPane().add(topContainer, BorderLayout.NORTH );
frame.getContentPane().add(bottomContainer, BorderLayout.CENTER );

frame.setSize(640,480);
frame.setVisible(true);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


URLの入力後、エンターすると実行されるよう設定↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~
public void actionPerformed(ActionEvent e){
String url = addrField.getText();
System.out.println(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
System.out.println("無効なURLを指定していませんか?");
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~





4つのボタンが押された際の動作をそれぞれ設定↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class HomeActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String url = "http://www.google.co.jp/";
System.out.println(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
System.out.println("ページジャンプに失敗しました。");
}
}
}
public class sfcActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String url = "http://www.sfc.keio.ac.jp/top.html";
System.out.println(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
System.out.println("ページジャンプに失敗しました。");
}
}
}

public class sfsActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String url = "https://vu9.sfc.keio.ac.jp/sfc-sfs/";
System.out.println(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
System.out.println("ページジャンプに失敗しました。");
}
}
}

public class myhpActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String url = "http://ameblo.jp/media-net/";
System.out.println(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
System.out.println("ページジャンプに失敗しました。");
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




webページ内のリンクについての設定↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public void hyperlinkUpdate(HyperlinkEvent e){
if(e.getEventType() != HyperlinkEvent.EventType.ACTIVATED){
return;
}
String url = e.getURL().toString();
addrField.setText(url);
try{
htmlPane.setPage(url);
}catch(Exception err){
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



プログラムの実行処理↓↓↓
~~~~~~~~~~~~~~~~~~~~~~~
public static void main(String[] args){
HTMLViewer my_viewer = new HTMLViewer();
}
}
~~~~~~~~~~~~~~~~~~~~~~~