約 2,878,883 件
https://w.atwiki.jp/ce00582/pages/3774.html
import java.awt.*; import java.awt.event.*; class game0708 extends Frame implements Runnable{ int t; Image img1; Image off; Graphics offsc; public static void main(String [] args) { Frame f=new game0708(); f.setTitle("game0708"); f.setSize(500,600); f.setBackground(Color.white); f.setVisible(true); } game0708(){ img1 = Toolkit.getDefaultToolkit().getImage("0219.jpg"); t=0; Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ t=1; repaint(); try{ Thread.sleep(5000); }catch(InterruptedException e){} t=2; while(t 10){ repaint(); try{ Thread.sleep(1000); }catch(InterruptedException e){} t=t+1; } } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ off = createImage(500,600); offsc = off.getGraphics(); offsc.drawImage(img1,0,50,500,500,this); offsc.setColor(Color.white); offsc.fillRect(0,550,500,50); offsc.setColor(Color.black); if(t==1)offsc.drawString("少しお待ちください",100,550); if(t==2)offsc.drawString("きれ",100,550); if(t==3)offsc.drawString("き",100,550); if(t 3)offsc.drawString("きれ",100,550); g.drawImage(off,0,0,this); } }
https://w.atwiki.jp/yoshida2/pages/129.html
import java.awt.*; import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import java.util.Calendar; public class AClock2 extends JFrame { final int f_width = 400; final int f_height = 430; final int r = 180; final int x_0 = 20; final int y_0 = 40; final int x_c = x_0+r+1; final int y_c = y_0+r+1; //Image pi=getToolkit().getImage( Clock.gif ); Image pi=getToolkit().getImage( 4600.jpeg ); public AClock2() { super( アナログ時計 ); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(f_width, f_height); this.setVisible(true); java.util.TimerTask task = new java.util.TimerTask() { public void run() { repaint(); //一秒ごとに再描画 } }; java.util.Timer timer = new java.util.Timer(); timer.schedule(task, 0L, 1000L); } public void paint(Graphics g){ //背景の描画 g.setColor(Color.white); g.fillRect(0, 0, f_width, f_height); //時計の描画 g.setColor(Color.green); g.drawOval(x_0, y_0, r*2+1, r*2+1); g.fillRect(x_c-4, y_c-4, 9, 9); for(int i=-84, j=1; i =270; i+=6){ g.setColor(Color.green); double x=r*Math.cos(Math.toRadians(i)); double y=r*Math.sin(Math.toRadians(i)); if(i%30==0){ double x2=(r-15)*Math.cos(Math.toRadians(i)); double y2=(r-15)*Math.sin(Math.toRadians(i)); g.drawLine(x_c+(int)x, y_c+(int)y, x_c+(int)x2, y_c+(int)y2); double x3=(r-25)*Math.cos(Math.toRadians(i)); double y3=(r-25)*Math.sin(Math.toRadians(i)); g.setColor(Color.magenta); g.drawString( +j, x_c+(int)x3-5, y_c+(int)y3+5); j++; }else{ double x2=(r-7)*Math.cos(Math.toRadians(i)); double y2=(r-7)*Math.sin(Math.toRadians(i)); g.drawLine(x_c+(int)x, y_c+(int)y, x_c+(int)x2, y_c+(int)y2); } } //g.drawImage(pi,-100,-80,this); // Clock.gif g.drawImage(pi,x_c-350,y_c-460+5,this); // 4600.jpeg //針の描画 Calendar time = Calendar.getInstance(); int s = time.get(time.SECOND)*6-90; //秒針の角度 int sl = r-15; //秒針の長さ double slx = sl*Math.cos(Math.toRadians(s)); double sly = sl*Math.sin(Math.toRadians(s)); g.setColor(Color.pink); g.drawLine(x_c, y_c, x_c+(int)slx, y_c+(int)sly); int m = (time.get(time.MINUTE)*6+time.get(time.SECOND)/10)-90; //分針の角度、「/10」の部分は「/60*6」から int ml = r-30; //分針の長さ double mlx = ml*Math.cos(Math.toRadians(m)); double mly = ml*Math.sin(Math.toRadians(m)); g.setColor(Color.red); g.drawLine(x_c, y_c, x_c+(int)mlx, y_c+(int)mly); int h = (time.get(time.HOUR_OF_DAY)*30+time.get(time.MINUTE)/2)-90; //時針の角度、「/2」の部分は「/12*6」から int hl = r*4/7; //時針の長さ double hlx = hl*Math.cos(Math.toRadians(h)); double hly = hl*Math.sin(Math.toRadians(h)); g.setColor(Color.blue); g.drawLine(x_c, y_c, x_c+(int)hlx, y_c+(int)hly); } public static void main(String args[]){ new AClock2(); } }
https://w.atwiki.jp/solutionlog/pages/20.html
Site http //yoshio3.com/2011/12/19/java-persistence-api-for-begineers/
https://w.atwiki.jp/javafx/pages/37.html
ポップアップメニュー import javafx.ui.*; import java.lang.System; import javafx.lang.canvas.*; var popup = PopupMenu{ items foreach(i in [1..3]) MenuItem{ text "Item{i}" action operation(){ System.out.println("Clicked {i}"); } } }; trigger on PopupMenu.visible[oldValue] = newValue{ System.out.println(oldValue); System.out.println(newValue); } [[Frame]]{ title "ポップアップ" width 200 height 200 content FlowPanel{ content Button{ text "ポップアップ" var self action operation(){ popup.visible = false; -- ここをコメントアウトすると一度しか使えないポップアップになる popup.x = 0; popup.y = bind self.height; popup.owner = self; popup.visible = true; } } } visible true } 説明はのちほど trackback()
https://w.atwiki.jp/xronia/pages/23.html
サンプルコードはいろいろあるが せっかく3Dなのに視点も変えられないものばかり とりあえずはマウスでゴリゴリ動かせるようにしないと3Dの面白さはないでしょう。 自然にくるくる回るってのもあるが、やっぱ拡大縮小して欲しい。 てなわけでマウスで動くようにしたい! いじるのは、Canvas3D。こいつを継承してマウスのイベントを足してしまえばできるっぽい。 ちなみに、ここでのマウスでゴリゴリの仕様は 右ドラッグ:回転 左ドラッグ:視点移動 マウスホイール:拡大・縮小 結構贅沢な仕様である。 そしてできたソースがこれ。 package jp.xronia.j3d; //******************************************************************************//マウスのドラッグで視点移動を行うCanvas3D拡張クラス“Canvas3DMouseMove”////Canvas3Dを継承//MouseMotionLisenerを実装////コンストラクタの引数はカメラの距離//さらに,コンストラクタの引数にはGraphicsConfigurationが必要(Canvas3Dと同じ仕様)//****************************************************************************** import java.awt.Dimension;import java.awt.GraphicsConfiguration;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener; import javax.media.j3d.Canvas3D;import javax.media.j3d.Transform3D;import javax.media.j3d.TransformGroup;import javax.vecmath.Vector3f; import com.sun.j3d.utils.universe.SimpleUniverse;import com.sun.j3d.utils.universe.ViewingPlatform; public class Canvas3DMouseMove extends Canvas3D {/** SerialVersionUID */private static final long serialVersionUID = 1L; //=============================================================================//クラスのフィールド //動径の長さ(座標中心と視点との距離)float camera_distance; // マウスの座標なんかを保存するオブジェクトMouseEntity mouse = new MouseEntity(); //SimpleUniverseをフィールドとしてもっておく。SimpleUniverse universe; //視点の座標変換のためのグループTransformGroup camera; //=============================================================================//コンストラクタpublic Canvas3DMouseMove(float Distance, GraphicsConfiguration config) {//親クラスのコンストラクタを呼ぶ. 引数はGraphicsConfiuration.super(config); //カメラの原点からの距離を設定camera_distance = Distance; //空のSimpleUniverseを生成universe = new SimpleUniverse(this); //============================================================================//視点(カメラ)について設定//============================================================================ //------------------------------------------------------------------//カメラ全般の初期設定 //SimpleUniverseが生成したViewingPlatformを取得ViewingPlatform vp = universe.getViewingPlatform(); //ViewingPlatformの座標変換グループとして,“Camera”を割り当てるcamera = vp.getViewPlatformTransform(); //以上の設定をカメラに反映distance();//============================================================================//マウスの設定//============================================================================// マウスクリックイベント登録addMouseListener(new MouseAdapter() {@Overridepublic void mousePressed(MouseEvent e) {mouse.setMouseButton(e.getButton());mouse.setPrevMouseX(e.getX());mouse.setPrevMouseY(e.getY()); }});// マウスホイールイベント登録addMouseWheelListener(new MouseWheelListener() {@Overridepublic void mouseWheelMoved(MouseWheelEvent e) {mouse.setScale(mouse.getScale() * (e.getWheelRotation() 0 ? 1.25f 1f / 1.25f)); distance();}}); // マウスドラックイベント登録addMouseMotionListener(new MouseMotionAdapter() {@Overridepublic void mouseDragged(MouseEvent e) {Dimension size = e.getComponent().getSize();float dx = (float)(e.getX() - mouse.getPrevMouseX()) / size.width;float dy = (float)(mouse.getPrevMouseY() - e.getY()) / size.height; if (mouse.getMouseButton() == MouseEvent.BUTTON1) {// 移動量の更新mouse.setDistanceX(mouse.getDistanceX() + dx * 30f);mouse.setDistanceY(mouse.getDistanceY() + dy * 30f);} else {// 角度の更新 (ウィンドウの端から端までで、360度回転するようにする)mouse.setAngleX(mouse.getAngleX() - dy * 360.0f);mouse.setAngleY(mouse.getAngleY() + dx * 360.0f);} // 現在のマウスの位置を保存mouse.setPrevMouseX(e.getX());mouse.setPrevMouseY(e.getY()); distance();} });} //============================================================================//マウスがドラッグ時に呼ぶメソッド//============================================================================public void distance() {//===========================================================================//極座標を直交座標へ直す//===========================================================================//theta関係の計算(球座標→直交座標)float camera_y = camera_distance * (float)Math.sin(Math.toRadians(mouse.getAngleX())) *mouse.getScale();float camera_xz = camera_distance * (float)Math.cos(Math.toRadians(mouse.getAngleX())) *mouse.getScale(); //phi関係の計算(球座標→直交座標)float camera_x = camera_xz * (float)Math.sin(Math.toRadians(mouse.getAngleY()));float camera_z = camera_xz * (float)Math.cos(Math.toRadians(mouse.getAngleY()));//3次元ベクトル(カメラの位置用)Vector3f Vector_camera_pos = new Vector3f(camera_x, camera_y, camera_z);Vector3f vector_distance = new Vector3f(-mouse.getDistanceX(), -mouse.getDistanceY(), 0);//===========================================================================Transform3D Transform_camera_pos = new Transform3D();//カメラの位置//平行移動の座標変換を用意Transform_camera_pos.setTranslation(Vector_camera_pos); Transform3D Transform_camera_pos2 = new Transform3D();//カメラの位置Transform_camera_pos2.setTranslation(vector_distance);//===========================================================================//カメラの座標変換実行//===========================================================================Transform3D Transform_camera_theta = new Transform3D();//thetaに関する回転Transform_camera_theta.rotX(-Math.toRadians(mouse.getAngleX())); Transform3D Transform_camera_phi = new Transform3D();//phiに関する回転Transform_camera_phi.rotY(Math.toRadians(mouse.getAngleY())); //合成するTransform_camera_phi.mul(Transform_camera_theta);Transform_camera_pos.mul(Transform_camera_phi);Transform_camera_pos.mul(Transform_camera_pos2); //座標変換実行camera.setTransform(Transform_camera_pos);}//*****************************************************************************} まああれだ、どこのサイトだか忘れたがほぼパクリ。 おっとパクリ元発見→http //www.maroon.dti.ne.jp/koten-kairo/works/Java3D/Java3D_start.html#mouse なので、左ドラッグの移動とホイールの拡大縮小は完全にオレ仕様であるが、そこはそれということで、 見える!オレにも見える!くく〜(おま package jp.xronia.j3d; public class MouseEntity { private int prevMouseX = 0; private int prevMouseY = 0; private float angleX = 0.0f; private float angleY = 0.0f; private float distanceX = 0.0f; private float distanceY = 0.0f; private int mouseButton = 0; private float scale = 1.0f; public float getScale() {return scale;}public void setScale(float scale) {this.scale = scale;}public int getMouseButton() {return mouseButton;}public void setMouseButton(int mouseButton) {this.mouseButton = mouseButton;}public int getPrevMouseX() {return prevMouseX;}public void setPrevMouseX(int prevMouseX) {this.prevMouseX = prevMouseX;}public int getPrevMouseY() {return prevMouseY;}public void setPrevMouseY(int prevMouseY) {this.prevMouseY = prevMouseY;}public float getAngleX() {return angleX;}public void setAngleX(float angleX) {this.angleX = angleX;}public float getAngleY() {return angleY;}public void setAngleY(float angleY) {this.angleY = angleY;}public float getDistanceX() {return distanceX;}public void setDistanceX(float distanceX) {this.distanceX = distanceX;}public float getDistanceY() {return distanceY;}public void setDistanceY(float distanceY) {this.distanceY = distanceY;}@Overridepublic String toString() {return "MouseEntity [prevMouseX=" + prevMouseX + ", prevMouseY="+ prevMouseY + ", angleX=" + angleX + ", angleY=" + angleY+ ", distanceX=" + distanceX + ", distanceY=" + distanceY+ ", mouseButton=" + mouseButton + ", scale=" + scale + "]";}} おっと、追加したMouse用のエンティティを掲載するのを忘れるところだったぜ で、使い方。 package jp.xronia.j3d; import java.awt.GraphicsConfiguration; import javax.media.j3d.BoundingSphere;import javax.media.j3d.BranchGroup;import javax.media.j3d.DirectionalLight;import javax.media.j3d.TransformGroup;import javax.swing.JFrame;import javax.swing.JPanel;import javax.vecmath.Color3f;import javax.vecmath.Point3d;import javax.vecmath.Vector3f; import com.sun.j3d.utils.geometry.ColorCube;import com.sun.j3d.utils.universe.SimpleUniverse; public class Test extends JFrame {/** SerialVersionUID */private static final long serialVersionUID = 1L; public Test() {//============================================================================//まずは、基礎フレームの設定。//============================================================================//ウィンドウのサイズ設定this.setSize(400,400);//ウィンドウのタイトル設定this.setTitle("ViewChange_test");//ウィンドウを閉じる動作の登録this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//コンテントペインを作成JPanel cp = new JPanel();//コンテントペイン上のレイアウトは全て手動で行うcp.setLayout(null);//フレームに、コンテントペインを登録this.add(cp); //============================================================================//次にJava3D関係の設定。//============================================================================//現在使用している画面の、ハードウェア情報を取得するGraphicsConfiguration g_config = SimpleUniverse.getPreferredConfiguration();//Cnavas3D_ViewChangeクラスを用意する(距離は40, マウス感度は0.03)Canvas3DMouseMove canvas = new Canvas3DMouseMove(10.0f, g_config);//3D表示領域の大きさを設定。今回はウィンドウいっぱいに表示するcanvas.setBounds(0,0,400,400);//コンテントペインにCanvas3Dを登録cp.add(canvas); //Canvas3DクラスのSimpleUniverseを利用。SimpleUniverse universe = canvas.universe;//universe.getViewingPlatform().setNominalViewingTransform(); //============================================================================//ライトの設定//============================================================================//ライトの強さ及び色Color3f light_color = new Color3f(3.4f, 3.4f, 3.4f);//ライトの方向Vector3f light_direction = new Vector3f(-0.8f, -1.2f, -1.0f);//平行光源を用意DirectionalLight light = new DirectionalLight(light_color,light_direction);//ライトで照らす範囲(球範囲で指定,中心座標とその半径)BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0);//範囲を登録light.setInfluencingBounds(bounds);//ライト用の「枝」を作るBranchGroup BranchGroup_Light = new BranchGroup();//「枝」にライトを登録BranchGroup_Light.addChild(light);//仮想空間に「枝」を登録universe.addBranchGraph(BranchGroup_Light); //============================================================================//3D空間を構築していきます//============================================================================ BranchGroup bg = new BranchGroup();//「カラーキューブ」を1つ生成ColorCube cube = new ColorCube(1.0f); //座標変換クラスを生成TransformGroup tfg = new TransformGroup(); //座標変換の書き換えを許可tfg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); //カラーキューブを座標変換クラスに登録tfg.addChild(cube); bg.addChild(tfg); universe.addBranchGraph(bg); //ウィンドウを可視化this.setVisible(true);}//============================================================================// メイン//============================================================================public static void main(String args[]) {new Test();}} ここではおざなりにカラーキューブを表示させているが、見てみたいサンプルをブランチグループに登録してあげれば 大抵のサンプルはマウスでグリグリできるようになるはず。
https://w.atwiki.jp/javamock/pages/59.html
2次元配列 配列は2次元、3次元、4次元・・・と多次元配列を使用できます。 ここでは2次元配列の説明をします。 2次元配列は以下のように宣言します。 型名[][] 配列変数名; そして値を格納する領域を確保するためにnewを使って以下のように領域確保します。 配列変数名 = new 型名[要素数][要素数]; また、要素への値の代入や参照を行うには以下のようにします。 配列変数[インデックス][インデックス] 2次元配列 使用例 1 TwoDimensionalArraySample1.java class TwoDimensionalArraySample1 { public static void main([[String]][] args) { // 2次元配列の宣言 [[int]][][] twoDimentionalArray = new int[3][3]; [[for]] (int i = 0; i twoDimentionalArray.length; i++) { for (int j = 0; j twoDimentionalArray[i].length; j++) { twoDimentionalArray[i][j] = i*j; } } for (int i = 0; i twoDimentionalArray.length; i++) { for (int j = 0; j twoDimentionalArray[i].length; j++) { System.out.println("twoDimentionalArray[" + i + "][" + j + "] " + twoDimentionalArray[i][j]); } } } } 実行結果 C \java javac TwoDimensionalArraySample1.java C \java java TwoDimensionalArraySample1 twoDimentionalArray[0][0] 0 twoDimentionalArray[0][1] 0 twoDimentionalArray[0][2] 0 twoDimentionalArray[1][0] 0 twoDimentionalArray[1][1] 1 twoDimentionalArray[1][2] 2 twoDimentionalArray[2][0] 0 twoDimentionalArray[2][1] 2 twoDimentionalArray[2][2] 4 以上のように2次元以上の配列の場合でも「length」は使用できます。 以下の箇所のように使用します。 for (int i = 0; i twoDimentionalArray.length; i++) { for (int j = 0; j twoDimentionalArray[i].length; j++) { twoDimentionalArray[i][j] = i*j; } } 2次元配列 使用例 2 以下のようにして2次元配列を初期化宣言することができます int[][] twoDimensionArray = {{0, 1, 2,}, {3, 4, 5,}, {6, 7, 8,}}; TwoDimensionArraySample2.java class TwoDimensionArraySample2 { public static void main(String[] args) { //2次元配列の宣言 int[][] twoDimensionArray = {{0, 1, 2,}, {3, 4, 5,}, {6, 7, 8,}}; for (int i = 0; i twoDimensionArray.length; i++) { for (int j = 0; j twoDimensionArray[i].length; j++) { System.out.println("twoDimensionArray[" + i + "][" + j + "] " + twoDimensionArray[i][j]); } } } } 実行結果 C \java javac TwoDimensionalArraySample2.java C \java java TwoDimensionArraySample2 twoDimensionArray[0][0] 0 twoDimensionArray[0][1] 1 twoDimensionArray[0][2] 2 twoDimensionArray[1][0] 3 twoDimensionArray[1][1] 4 twoDimensionArray[1][2] 5 twoDimensionArray[2][0] 6 twoDimensionArray[2][1] 7 twoDimensionArray[2][2] 8
https://w.atwiki.jp/hituzi05/pages/20.html
AVA用語 AVAのwikiに詳しく書いてあるのでそちらに飛んでもらいます。
https://w.atwiki.jp/cupnes/pages/46.html
jQueryなどを利用するscriptタグを取得する jQuery google api and other google hosted javascript libraries. - ScriptSrc.net http //scriptsrc.net/ jQueryやUI、PrototypeなどのライブラリーをGoogleライブラリAPIから読み込む方法-がんばるデザイナ tuts! http //worldwidedeb.net/2011/05/09/jquery-ui-prototype-google-api-url jQueryのscriptタグを一瞬でコピペできるScriptSrc.netが便利 - 大人になったら肺呼吸 http //d.hatena.ne.jp/replication/20120116/1326692024 YouTubeと連携する YouTube連携|jQuery plugin|Ajax|PHP JavaScript Room http //phpjavascriptroom.com/?t=ajax p=jquery_plugin_youtube
https://w.atwiki.jp/note4recurrent/pages/22.html
尾崎先生 今日の説明資料は共有フォルダにあります。 s1共有\ozaki\Web基礎.pdf 6/21 HTTPの仕組み PC(http request URL) - サーバー(Apache) サーバー(http response) - PC ブラウザはURLを発行し、帰ってきたhtmlを画像に表示する役割。 静的ウェブページ お仕着せの完成品を買ってくるだけ 動的ウェブページ サーバーで情報と付け加えて返す:「JSPとサーブレット」 オーダーした完成品が届く点では静的コンテンツと一緒 Javascriptによる動的ページ:ブラウザで実行されるところがJSPとの違い 素材を返してもらって、最終的にはブラウザで加工して完成させる。 受け取ったコンテンツをブラウザ上で自動的に更新することができる(動く時計など) VSC起動 ファイルメニューでルートフォルダ選択(事前に作っておく) index.htmlを新規作成 最初の行にhtmlと入れるとショートカットが出るのでhtml 5を選ぶ。 決まり切ったコードが自動的に入れられる。(別に自分で叩いても、コピペしても無問題) lang = "ja" にしておくこと:この講座では日本語のページを作るから。 VSCの機能拡張 open in default browserをインストール javascriptの場所 /body の前に置くのが多い script src="script.js" /script は別のファイルを作るため script" 直接スクリプトを書くため /script 変数の作り方 var 使わないほうが良い(過去はこれしかなかった) const 再代入不可 let 再代入可能 Javascript は行末に;はあってもなくてもかまわない。あってもエラーにはならない。 ESLintという文法チェッカーではつけることを推奨:ほかの言語も書くときに忘れないようにつけたほうがいいかも。 変数の宣言 静的型付(C JAVA COBOL VBA)メモリが少なかった時代に開発されたもの。メモリを節約させるため。 動的型付(PHP Javascript Python)メモリが豊富に使えるようになってから作られた言語に多い let lang = "ジャバスクリプト" lang = "Java" lang = 100 //許される Javascript で使える変数の型 Number:数値 整数も少数も大きな数字もこれだけ NaN(Not a Number 非数字) String:文字列全て Boolean Null Undefined type ofで変数に入っているデータの型を調べられる a=4 console.log(typeof a) *num console.log(typeof "a") String let lang = "ジャバスクリプト" lang = "Java" lang = 100 //許される console.log(lang) //Javascript データ型 // Number console.log(0/0) const a = 10 const b = 4 console.log(a+b) console.log(a-b) console.log(a*b) console.log(a/b) console.log(a % b) //剰余算 console.log(a ** b) //べき乗 console.log(typeof num) //型を調べる // String "" も const food1 = "チョコレート" const food2 = チョコレート console.log(food1) const food3 = "パフェ" console.log(food1+food3) // + で連結 //+で連結された結果は文字列となる const drink1 = "珈琲" const unit = "杯" console.log(drink1 + 3 + unit) console.log(typeof (drink1 + 3 + unit)) //テンプレートリテラル(ES6) //例 「珈琲を2杯ください」 console.log(drink1 + "を" + 2 + unit + "ください") console.log(`${drink1}を2${unit}ください`) //"15"を15に変換(VBAのVALUE) const strNum = "15" console.log(typeof parseInt(strNum))//parseIntで文字列が数字になる //数字として認識できるかどうかはシステムに依存。全角の数字でもいけるかどうか保証できない。 // Undefined(未定義) // 初期化されていない変数 // Boolean(真偽値) // true or false だけを持てる let flg = true console.log(flg) //否定演算子 ! console.log(!flg) //比較演算子 const con1 = 100 const con2 = 50 //等値演算子 console.log(con1 == con2*2)//左辺と右辺が等しい値か console.log(con1 != con2*2)//左辺と右辺は等しい値ではないか //同値演算子 const con3 = "50" console.log(con2 == con3) //左辺と右辺が等しい値か console.log(con2 === con3)//左辺と右辺が同じ値か:型まで一致しているか //配列 const drinks = ["珈琲","紅茶","ジュース","緑茶"] console.log(drinks[0]) console.log(drinks[2]) drinks[2] = "apple" //const で宣言したものでも更新できる console.log(drinks[2]) !DOCTYPE html html lang="ja" head meta charset="UTF-8" meta http-equiv="X-UA-Compatible" content="IE=edge" meta name="viewport" content="width=device-width, initial-scale=1.0" title Event /title /head body h1 id="target" アクセス前 /h1 button id="clk" click /button h2 id="target2" ABC /h2 p 下のボタンをクリックすると上の文字が変わります /p button id="clk2" change! /button script //読み込み完了時に動作 window.addEventListener("DOMContentLoaded",function(){ const newH1 = "アクセス後" const idTarget = document.querySelector("#target") //console.log(idTarget) idTarget.innerHTML = newH1 //ボタンを捕まえる const clickButton = document.querySelector("#clk") //console.log(clickButton) let flag = true clickButton.addEventListener("click",function(){ if (flag){ idTarget.innerHTML = "Clickされたよ" } else{ idTarget.innerHTML = newH1 } flag = !flag }) //ボタン2を捕まえる const clickButton2 = document.querySelector("#clk2") const idTarget2 = document.querySelector("#target2") let flag2 = true clickButton2.addEventListener("click",function(){ if (flag2){ idTarget2.innerHTML = "CDE" } else{ idTarget2.innerHTML = "ABC" } flag2 = !flag2 }) }) /script /body /html ボタン2を捕まえる以下のみ色々試した。 //ボタン2を捕まえる const clickButton2 = document.querySelector("#clk2") const idTarget2 = document.querySelector("#target2") let flag2 = 0 clickButton2.addEventListener("click",function(){ if(flag2 == 0){ idTarget2.innerHTML = "DEF" } else if(flag2 == 1){ idTarget2.innerHTML = "GHI" } else { idTarget2.innerHTML = "ABC" } flag2 += 1 if(flag2 2){ flag2 = 0 } if (idTarget2.innerHTML == "DEF"){ idTarget2.innerHTML = "文字列によって反応を変えることもできる" } }) 後、乱数発生の関数を加えれば簡易じゃんけんゲームくらいはできそう。 配列を使って順番にテキストを回す let i = 0; let dispText = ["DEF","GHI","ABC"] //この行までは起動時に一回だけ実行される。 clickButton2.addEventListener("click",function(){ //button2 が押される度に下のブロックが実行される。変数の値は残っている。 idTarget2.innerHTML = dispText[i]; i += 1; if (i 2){ i = 0; } }) 乱数と切り捨て関数を使ってランダムに表示 連続しないように確認を追加 const clickButton2 = document.querySelector("#clk2") const idTarget2 = document.querySelector("#target2") let ransuu = 0; let check = 0; let dispText = ["Masth.random と Math.trunc","乱数と整数切り捨て関数","コードスッキリ","配列の使い方の練習にもなった"] clickButton2.addEventListener("click",function(){ if (ransuu == check){ ransuu = Math.trunc(Math.random()*10/3); //乱数は0〜1の少数なので10倍して3で除した結果の少数以下を切り捨てている } else { ransuu = check; } idTarget2.innerHTML = dispText[ransuu]; }) 関数を使ってみました コードがスッキリして読みやすい(はずw) const clickButton2 = document.querySelector("#clk2") const idTarget2 = document.querySelector("#target2") let ransuu = 0; let dispText = ["Masth.random と Math.trunc","乱数と整数切り捨て関数","コードスッキリ","配列の使い方の練習にもなった"] clickButton2.addEventListener("click",function(){ ransuu = getRansuu(ransuu); idTarget2.innerHTML = dispText[ransuu]; }) //今持ってる数字ransuuを受けて異なる数字を返す関数 karisuu は関数内でしか使わないローカル変数 function getRansuu(num) { let karisuu = Math.trunc(Math.random()*10/3); //乱数は0〜1の少数なので10倍して3で除した結果の少数以下を切り捨てている while (num == karisuu) { //メインの数字が持っているものと同じ数字が出ている間は何回も数字を取得する karisuu = Math.trunc(Math.random()*10/3); } return karisuu; }; 繰り返し:ループ for forEach script window.addEventListener("DOMContentLoaded",function(){ //Get UL const ulCourses = document.querySelector("#courses") const subjects =[ "webクリエイター", "web プログラマー", "動画編集", ] for (let index = 0 ; index subjects.length ; index++){ //meke li tag li /l const newLi = document.createElement("li") // li にテキストを入れる li web creater /li newLi.innerText = subjects[index] // add ulCourses.appendChild(newLi) } subjects.forEach(function(subject){ const newLi = document.createElement("li") newLi.innerText = subject ulCourses.appendChild(newLi) }) }) /script html !DOCTYPE html html lang="ja" head meta charset="UTF-8" meta name="viewport" content="width=device-width, initial-scale=1.0" title Memoアプリ /title link href="https //cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" /head body div class="container" !-- INPUT -- div class="alert alert-secondary mt-3" div class="row" div class="col-3" input type="text" class="form-control" name="" id="name" placeholder="名前" /div div class="col-7" input type="text" class="form-control" name="" id="comment" placeholder="コメント" /div div class="col-2" button class="btn btn-outline-success" id="btn" 追加 /button /div /div /div !-- DATA TABLE -- table class="table table-secondary table-striped table-bordered" id="tbl" tr th 名前 /th th コメント /th th 日付 /th /tr tr td 森下 /td td ........ /td td 2022/06/27 /td /tr tr td 森下 /td td ........ /td td 2022/06/27 /td /tr /table /div script src="memoapp.js" /script /body /html memoapp.js //windwoが読みこまれるまで待機 window.addEventListener("DOMContentLoaded",function(){ const tbl = this.document.querySelector("#tbl") //btnが押されたら const btn = document.querySelector("#btn") btn.addEventListener("click",function(){ //名前を取り込む const name = document.querySelector("#name") //コメントを読みこむ const comment = document.querySelector("#comment") //名前とコメントの両方に入力があった場合 //name.length に文字数が入ってくる //if (name.value.length 0 comment.value.length 0){ も同じ意味 if (name.value.length comment.value.length ){ //入力された日時の取得 月は0オリジンなので注意が必要 const current = new Date() const currentStr= `${current.getFullYear()}年${current.getMonth()+1}月${current.getDate()}日` //console.log(currentStr) //tableの更新 //tr行設定 const trTag = document.createElement("tr") //td 1行あたり3カラム(3列)なので、tdを3回繰り返す。 const tdNameTag = document.createElement("td") //一つ目のtd tdNameTag.innerText = name.value //tdの中身を設定 name.value には上で入力された名前が入っている trTag.appendChild(tdNameTag) //tdタグを加える1回目 const tdCommentTag = document.createElement("td") tdCommentTag.innerText = comment.value trTag.appendChild(tdCommentTag) //tdタグを加える2回目 const tdDateTag = document.createElement("td") tdDateTag.innerText = currentStr trTag.appendChild(tdDateTag) //tdタグを加える一3回目 //tableにtr行を挿入 tbl.appendChild(trTag) //三つのtdの入ったtrを一行追加 //入力フィールドをクリアして終わり name.value ="" comment.value ="" } }) }) 2022/7/05 !doctype html html lang="ja" head meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" link href="https //cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" title Javascript game /title /head body div class="container" div class="alert alert-info" h1 class="h4" 足りない文字はどれ? /h1 button class="btn btn-info" id="makeQuestion" 出題 /button span id= timediff class="px-3" /span /div div class="row" id="quizDiv" /div //数字を並べる場所 div class="form-row" div class="col-2 offset-9" //col-2 offset-9 はbootstrap で使うためのセレクタ 以下同様 答え input type="text" name="" id="answerBox" class="form-control" //回答記入用フィールドの設定 /div div class="col-1" button class="btn btn-danger" id="answerbtn" 回答 /button //回答ボタンを配置 /div /div /div script window.addEventListener("DOMContentLoaded",function(){ // console.log("load"); // 問題を書き込む場所 const quizDiv = document.querySelector("#quizDiv"); //問題文字列を並べる場所を使う //quizDiv に quizDiv で設定した場所(div id ="quizDiv" で指定されたところ)を入れる //console.log(quizDiv); // 解答入力欄 const answerBox = document.querySelector("#answerBox"); //入力欄を今後 answerBox として使う //console.log(answerBox); let condition = false; //出題が押されているかどうかの確認に使う let answer = ""; //答えを保管するための変数 const makeQuestion = document.querySelector("#makeQuestion"); //出題ボタンを使うという宣言 //出題ボタンをクリックされたときの動作 makeQuestion.addEventListener("click",function(){ condition = true; //出題済にする const questions = ["A","B","C","D","E"]; //問題の配列を設定 // console.log("btn clicked"); //quesiton から1つ取り出す answer = questions.splice(Math.floor(Math.random()*questions.length),1); //randomを使って一文字を抜き取る Mathfloor は切り捨て、Math.randomは乱数発生 //Math.random()にquestions.lengthを掛けることで最大いくつまでの乱数を発生させるかを操作する //Math.random()は0〜1までの少数なので4を掛ければ0〜3までの少数になる。Mathfloorで切り捨てて整数にしている。 //Math.random()にquestions.lengthを掛けているのはquestionsの数が変わってもプログラムを書き直す必要がないようにするため。(他のプログラムにコピペして再利用するときにも便利) // console.log(questions.splice(Math.floor(Math.random()*questions.length),1)); //console.log(Math.floor(Math.random()*questions.length)); //console.log(answer); //console.log(questions); //前回の結果をクリア while(quizDiv.firstChild){ //quizDiv.firstChild がある間は回り続ける quizDiv.removeChild(quizDiv.firstChild); //quizDivにある子要素(この場合div)を上から一つ取り除く } //文字列を並べかえる、 const questions2 = []; //並べ替えのための配列を準備 while(questions.length){ //questions の配列分ループする questions2.push(questions.splice(Math.floor(Math.random()*questions.length),1)[0]); //splice で切り取るための開始位置をランダムで決めている。 //random の乗数をquestions.lengthとしているのはquestionsの配列がループを回る度に変わるから。 //quetions.splice(開始位置,抜き取る数) //questions2.push(配列に付け加える対象) //一番右に[0]とあるのは、splice で抜き取ったものが配列だから。ここでは1個しかないのでゼロ番目と決まっている。 } questions.push(...questions2); // 配列の中身を他の配列にコピーするチート技。新しいJavascriptでしかできない。 //これを使わない場合はループを使って中身を一つ一つコピーするしかない。 //文字列を並べる divタグを追加 questions.forEach (function(q){ //questions の数だけ以下のブロックを実行。qにはquestions配列から取り出した文字一つが入っている。 //console.log(q); const newDiv = document.createElement("div"); //div タグを生成 if (Math.floor(Math.random()*2)===0){ //ランダムで0か1かを発生し、0なら以下を実行 q = q.toLowerCase(); // qを小文字に変換(else を使わないのは元々大文字が入っているから } newDiv.innerText = q; //q をdiv の innerText に入れる(htmlで表示される) newDiv.classList.add("col-1","border","text-center","me-1"); //div に付加するclassを一括設定 //col-1 は CSS(この場合はbootstrapやけど)で横に並べる設定。 //border は枠線をつける、text-center は中央揃え、me-1 は右にマージン1 quizDiv.append(newDiv); // newDiv を quizDiv に追加 //ループ一回転で一つの文字 div /div を追加する }) }); //解答ボタンをクリックされたときの動作 const answerbtn = document.querySelector("#answerbtn"); answerbtn.addEventListener("click",function(){// console.log("ansbtn clicked"); // if (condition == false){ // console.log("出題されていない"); // return false; // } const inputAnswer = answerBox.value.toUpperCase(); //inputAnswer に入力された文字を大文字にして代入 if(condition inputAnswer.length===1){ //condition(出題ボタンが押されていて)inputAnswerが一文字(空白だったり2文字以上だったりしないときに以下のブロックを実行 if (answer[0] === inputAnswer){ //出題時にとっておいた answer と inputAnswer と突合 alert("正解です"); }else { alert("不正解です"); answerBox.value =""; //不正解の場合は入力欄をクリアして次の入力を待つ。 } } }); }); /script /body /html
https://w.atwiki.jp/javafx/pages/12.html
JavaFXリファレンス JavaFX Script リファレンス日本語版JavaFXでの文字列の連結についてJavaFXクラス一覧ColorJavaFX既知のバグ ページ新規作成 メモ的リンク集(リファレンス関係) https //openjfx.dev.java.net/JavaFX_Programming_Language.html http //jfx.wikia.com/wiki/Main_Page http //blogs.sun.com/chrisoliver/resource/widgets.html http //blogs.sun.com/chrisoliver/ https //openjfx.dev.java.net/Getting_Started_With_JavaFX.html