ホームページ >Java >&#&チュートリアル >初心者向けJava学習メモ(10)
昨日学習した接続プールに基づいてソケットを思い出してください。その原理の重要なポイントは次のとおりです。サーバーは、接続を処理するために限られた数の PooledConnectionHandler スレッドを開きます。すべての顧客の接続リクエストは、Pool 接続プールに追加されます。 linklist() オブジェクト) ; PooledConnectionHandler は、接続プールに接続リクエストがあることを検出すると、すぐにその処理を開始します。つまり、全員が同じプールを使用します (したがって、これは静的変数です)。 Java プログラミングについては学習しました。学習したことを応用するときが来ました。実際に言語を使い始めたい場合は、C++ でテトリス ゲームをプログラミングしたことがあると思います。 Java のプログラミングはオブジェクト指向の考え方を体現できるし、誰でも真似できるので、とにかく忘れかけていたのでもう一度実装してみよう。過去を振り返り、新しいことを学びましょう。さらに、Socket の学習に多くの時間を費やしたので、オンライン バージョンをコンパイルするだけです
テトリス プログラムにはグラフィカル ユーザー インターフェイス (GUI) が必要です。以前にコンパイルされた Java プログラムでは、アプレット プログラムのみがグラフィカル インターフェイスを実装しますが、Java でグラフィカル ユーザー インターフェイスを実装するには、Frame クラスを使用する必要があります。ウィンドウ クラス (windows) のサブクラスであり、グラフィカル ユーザー インターフェイスの基本的なウィンドウです。 小さなプログラムを実装することで、基本的に Java でのグラフィカル ユーザー インターフェイスを理解できます。 ファイル名: FrameMemo.java
機能: Popメニューのあるフレームを作成し、フレーム内に情報を表示します。ウィンドウ内の任意の場所をクリックすると、プログラムが終了します。
import java.awt.*;
public class FrameMemo extends Frame
{
public String motd;
public FrameMemo(String s)
{
super(s);// ここでの super は親クラスを表し、 this で表されるクラスに対応するため、ここで呼び出されるのは親クラスのコンストラクターです
motd=s;
size(300,300);
SetMenu();
}
public FrameMemo ()//オーバーロードされたコンストラクター
{
this("This is a Memo of Frame");//ここで呼び出されるものは FrameMemo(S) コンストラクターです
SetMenu();
}
public void SetMenu()
{
Menu m,n;
m=new Menu("Examples");
m.add(new MenuItem("Basic"));
m。 add(new MenuItem("Simple"));
n =new Menu("その他の例");
n.add(new MenuItem("Sub Basic"));
m.add(n);
MenuBar mb=new MenuBar();
mb.add(m) ;
setMenuBar(mb);
}
public voidPaint(Graphics g)
{
g.drawString(motd,15,15);
g.drawString ("どこをクリックしても終了",45,45);
}
public void start()
{
show();
}
public boolean MouseDown(Event e,int x,int y)
{
Hide();//ウィンドウを隠す
dispose();/ /リソースを解放
System.exit(0);
return false;
}
public static void main(String args[])
{
FrameMemo m;
m=new FrameMemo();
m.start();
}
}
ウィンドウを作成した後、さまざまなグラフィカル インターフェイス オブジェクトをウィンドウ内に配置する必要があります。つまり、レイアウトの原則があります。以下の例では、すぐに役立つように、使用する必要のあるコンテナのほとんどを示しています。将来 Java 構文を忘れた場合に、失われた記憶を見つけます。
file://layout example
file://j2sdk1.4.1 を
import java.awt.*;
import java.applet.*;
public でコンパイルしました。 class Layout extends Frame
{
Panel fnames,styles;/ /fnames パネルに 2 つのフォント ボタンを配置し、スタイル パネルに 3 つのスタイル ボタンを配置します
Button sans,serif;
Button bulled,bigger,smaller;//2 つのフォント ボタンを定義しますと 3 つのスタイル ボタン
SampleCanvas サンプル;//オーバーロードされたキャンバス オブジェクトを定義します
String fName=new String("SansSerif");
int fBold=0;
int fSize=12;
public Layout(){
super("レイアウトのメモ ");
setFont(new Font("Sans",Font.BOLD,12));
setLayout(new BorderLayout());//BorderLayoutのレイアウトを設定します。このメソッドは5つの要素を配置できます
ファイル: //向きは東、西、南、北、中央です
file://以下のプログラムは2つのボタンを下または南に設定するものです
fnames=newPanel();
fnames.setLayout(new GridLayout( 1,2,5,10));//パネルは GridLayout レイアウトを設定します
file://このレイアウトはグリッド レイアウトです
file://4 つのパラメータは次のとおりです
file://行数、列数、水平方向の間隔 (ピクセル)、垂直方向の間隔 (ピクセル)
sans= new Button("Sans Serif");
fnames.add(sans);
serif=new Button("Sans Serif");
fnames.add(serif ); file://2 つのボタンをそれぞれ追加します
add( fnames,"South"); file://BorderLayout レイアウトにパネルを含めます
file://次のプログラムは、左側の 3 つのボタンを設定します。またはwest
styles=newPanel();
styles.setLayout(new GridLayout(3,1,10,5));
bold=new Button("Bold");
styles.add(bold);
bigger= new Button("大きい");
styles.add(大きい) ;
小さい=新しい Button("小さい");
styles.add(小さい);
add(styles,"West");
sample=new SampleCanvas();
add(sample,"Center");
setSize(200,200);//この文をお見逃しなく
// setVisible(true);
}
public void start(){
show();
}
public static void main(String[] args)//Initialization
{
Layout MainFrame=new Layout();
MainFrame.start();
}
class SampleCanvas extends Canvas
{
String message;
public SampleCanvas() file:// クラスのコンストラクタ
{
rewrite("SanSerif"); file:// はオブジェクトの作成時にのみ実行されます。 , Java はデストラクターをサポートしていません
}
public void rewrite(String s)
{
setFont(new Font(fName,fBold,fSize));
message="このフォントは"+fName;
repaint();
}
public void Pain(Graphics g)
{
g.drawString(message,10,50);
}
}
}
(1 月 28 日) オンライン バージョンのテトリス プログラムでは、次のものが含まれている必要があります。クラス:
1.MainFrame: Frameに引き続き、メインインターフェースクラスです。クラス内の基本的な定義とメソッドの機能は以下の通りです
class MainFrame extends Frame{
public MainFrame(){//主にオブジェクトの初期化作業(ボタン、キャンバスなど) レイアウト
}
public boolean keyDown(Event e, int key){//キーボード操作を処理します
}
public boolean action(Event e, Object arg){//マウス操作を処理します
}
public void start (){//過去数日間のメモを見てください
show();
}
public static void main(String args[]) throws IOException{
MainFrame app;
app=new MainFrame();
app.start();
}
}
2.MainCanvas クラス。この Canvas オブジェクトは、Canvas クラス
3.Block クラス、つまりブロック クラスに関連するすべての論理操作を完了します。 class にはブロックの形状 (多次元配列) などの情報が格納されます。このクラスは MainCanvas クラスを補完します。実際、私のオリジナルの C++ バージョンでは、Block と MainCanvas を 1 つのクラスにすることができます。ただし、オブジェクト指向の観点からは、次の 2 つのクラスに分類されます。
4. ClientThread クラス。クライアントのスレッド クラスです。
5. ServerThread クラス。サーバーのスレッド クラスです。
ServerThread と ClientThread はネットワーク同期の操作を担当します
この部分の作業を分析した結果、基本的には上記で完了しました。非常に難しいため、オンライン バージョンのテトリスを実装する計画は断念することにしました。私がよく知っていたアイデアを繰り返すのは退屈です
Java アプレットに基づいた電子ホワイトボードの実装を目標にするつもりです
1 年後には、関連する研究を別のシリーズにまとめる予定です。結局のところ、言語はデザインのアイデアを具体化するためのツールに過ぎず、どのようなツールでも使いこなすにはそれほど時間はかかりません。ツールを使用して美しい芸術作品を作成することを常に頭の中で考えるべきです
Java を始める過程で、3 冊の本が私に多くの助けを与えてくれました。最初の本は、機械業界による「Java Concise Tutorial」です。 Press、イギリス人が書いた本で、言葉遣いもわかりやすく、2日でJavaの基礎を完全に理解できる、とても基礎的で奥深い技術を書いているような気がします。 2 冊目の本は Tan Haoqiang 編集の「Java Programming」で、初心者向けの入門レベルの参考書です。最後の本は chm 形式の「Think in Java」で、Java をより理解するのに役立ちました。さらに、私が挙げたソケットに関するすべての例は、Java でのソケット プログラムの作成方法に関する教材セットから派生したものです
。 CDSN の友人たちに新年明けましておめでとうございます!
添付: ダウンロード アドレス
1. 本のタイトル: Java Set Socket 101
注: このチュートリアルでは、ソケットとは何か、およびその使用方法を説明します。 Java プログラム。単一のクライアント/サーバー通信からサーバーにアクセスするクライアントのプールまで、いくつかの実際的な例を検討することで、現実世界で遭遇する典型的な状況に対処するソケットの使用方法を学びます。
URL: http://www-900.ibm.com/developerWorks/cn/edUCation/java/j-sockets/tutorial/j-sockets.zip
2. 本のタイトル: Java で考える (中国語版)-- -chm形式
URL: http://www.code-labs.com/manual/Think%20In%20Java.chm
現在も有効です
以上が初心者学習用メモ(10)の内容ですJava、その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください。