古参のJavaプログラマーが語る、学ぶべきSwingか否か
古参のJavaプログラマーが語る、Swingを学ぶべきか否か
Swingとは?
1) AWT
JDK 1.0リリース当初、SunはAWT(Abstract Window Toolkit)と呼ばれるGUI開発用の基本クラスライブラリ群を提供しました。これは、異なるOSのグラフィカルインターフェースを統一的に実装することを目的としていましたが、問題は、異なるOS用のグラフィックライブラリの機能が同じとは限らない(例えば、ボタンの動作が異なる)、あるプラットフォームに存在する機能が他のプラットフォームに存在しない可能性がある、ということでした。しかし、問題は、異なるOSのグラフィックライブラリの機能が異なる場合があり(例えば、ボタンの動作が異なる場合がある)、あるプラットフォームに存在する機能が、別のプラットフォームに存在しない場合があることです。また、AWTはコンポーネントが重いため、使用上のトラブルが多く、グラフィカルインターフェイスのデザインも十分に美しくなく、機能も非常に限定的である。このため、SunはAWTを改良し、より豊富なコンポーネントと機能を提供するSwingコンポーネントを提案し、GUI設計のあらゆるニーズに対応できるようにしたのである。
2)スウィング
Swingは、Javaアプリケーションのユーザーインターフェイスを開発するための開発ツールキットである。Swingを使用してGUIを開発することは、AWTよりも優れています。Swingは、もはやネイティブ・プラットフォームのGUIに依存しない純粋なJava実装を使用した軽量コンポーネントなので、すべてのプラットフォームで同じように実行でき、クロスプラットフォームのサポートが充実しているからです。その上、SwingはAWTよりも多くのGUIコンポーネントを提供しており、Swingの開発者はSwingの豊富で柔軟な機能とモジュラーコンポーネントを利用して、非常に少ないコードでエレガントなユーザーインターフェイスを作成することができるのです。
AWTコンポーネントと区別するために、Swingコンポーネントは
パッケージでは、クラス名がJで始まり、例えば、JFrame、JLabel、JButtonなどとなっていますが、AWTでは、Frame、Labelなどと呼ばれています。
Swingは何ができるのか?
1) 病院のソフトウェアなど、システムを作る。
2) ミニゲームをいろいろ作って、スタイルを充実させる。
3) Intellij IDEAは、java swingの開発
4)グラデーションデザインは結構使われていますね。
スイングコンテナ
Swingのコンテナは、トップレベルコンテナと中間コンテナの2つに分類され、コンテナクラスはすべてContainerクラスを継承しています。
トップレベルのコンテナ
Swingには、JFrame、JDialog、JAppletという3つのトップレベルコンテナがあります。
中間的なコンテナ
は他のコンポーネントをホストすることもできるコンテナコンポーネントの一種ですが、中間コンテナは独立して表示することができず、他のトップレベルのコンテナに依存する必要があります。一般的な中間コンテナは、JPanel、JScrollPane、JTabbedPane、そしてJToolBarです。
スイングレイアウト
1) FlowLayout (フローレイアウト)
フローレイアウトマネージャー。水平方向にコンポーネントを配置し、行を埋め、次の行に続ける。
2) GridLayout (グリッドレイアウト)
グリッドレイアウトマネージャー。複数のグリッドを指定された行数で区切り、各グリッドに1つのコントロールを順番に配置します。
3) GridBagLayout (グリッドバッグレイアウト)
GridBag レイアウトマネージャー。各コンポーネントは、1つまたは複数のグリッドを占有することができ、コンポーネントを垂直、水平、またはベースラインに沿って整列させることができます。
4) BoxLayout (ボックスレイアウト)
ボックスレイアウトマネージャー。複数のコンポーネントを水平または垂直に順番に配置します。
5)GroupLayout(グループ化されたレイアウト)
グループレイアウトマネージャー:コンポーネントを階層的に(直列または並列に)グループ化し、コンポーネントグループの水平方向および垂直方向の位置をそれぞれ決定します。
6) カードレイアウト
カードレイアウトマネージャー。コンテナ内の各コンポーネントをカードとして扱い、一度に1枚だけ見ることができ、他のカードは隠されます。
7) ボーダーレイアウト
ボーダーレイアウトマネージャー。コンテナを方向によって5つの領域(East, West, South, North, Center)に分割し、各領域に1つのコンポーネントを配置します。
8) SpringLayout (フレキシブルレイアウト)
弾性レイアウトマネージャ:コンポーネントの4つのエッジの座標位置を定義することでレイアウトが実装されます。
9) ヌル(空のレイアウト)
nullレイアウト:絶対レイアウトとも呼ばれ、座標と幅と高さを設定することでコンポーネントを配置します。
たくさんありそうでなかなか手が出せないのですが、実は以下の4つを主にマスターしています。
1、ボーダーレイアウト
2. FlowLayout (フローレイアウト)
3、グリッドレイアウト
4. ヌル(空のレイアウト)
Swing共通コンポーネント
<テーブルSwingフォームアプリケーションの作成方法
1. JFrameオブジェクトのインスタンス化、つまりフォームを作成する。
2. フォームの関連プロパティを設定します。
3. 容器を用意する
4. コンポーネントを作成します。
5. コンテナにコンポーネントを追加します。
6. フォームを見えるようにする。
なぜSwingは伸び悩んでいるのか?
1) Swingプログラムを実行するには、ユーザーのコンピュータにjavaの実行環境が必要であり、これはあまり現実的ではなく、不便である。
2)Swingで開発されたクライアント自体が比較的大きく、ユーザーのパソコンにクライアントをインストールする必要がある。
3) 異なるOSに遭遇した場合、異なるOS用のクライアント一式を開発する必要がある。
4) B/Sシステムの台頭が強いこと。B/Sアーキテクチャは、クライアントのインストールを必要とせず、ブラウザ上で開くWEBページでの開発が主流であり、コードが変更されてもクライアントをバージョンアップする必要がないため。
スイングを学ぶべきですか?
1) Java初心者・スクール生
Javaを初めて使う学生は、一生懸命書いたコードがコンソールに出力されるだけで、インタラクションもユーザーエクスペリエンスも感じられず、つまらないと感じるかもしれません。
Webの方向性が熱い今、Webを直接学べばいいという人もいるかもしれませんが、実際にはWebで学ぶべきことはたくさんあり、プログラミング初心者にとって、jsp、html、JavaScript、css、さらにはnode.js、vue.jsなど、たくさんの言語を受け入れることはあまりにも不親切で難しいことなのです。初心者がこんなことをしたら、地獄に落ちるのと同じである。
Swingを学ぶには多くの時間と労力が必要ですか?答えはノーです。
1) Swingはjavaの構文に基づいており、それを使うためにjavaを学ぶという敷居はなく、移行する必要もなく、触れるために新たに学ぶべき言語もない。
2)共通のレイアウト、共通のコンポーネント、共通のコンテナを学ぶことができる。これらは比較的固定化されているので、簡単に始められる。
3)描画を学ぶ、描画も比較的簡単です、小さなゲームの多くを行うことを学ぶ、良いツールのふりをする。
スイングの学習は何をもたらすか?
1) javaの学習は、もはや単純で面白くないSystem.out...ではありません。を使ったユーザー体験があり、達成感や自信を高めることができます。
2) 小さなゲームを作るのであれば、スレッドの使い方、ビジネスロジック処理の練習をすると良い。
3) レイアウト、共通コンポーネントなどは、デザインの考え方が似ているので、後々のWebの学習にも役立つ。
4) 描画の構文もJavaScriptのcanvas構文に近いので、swingで描き方を覚えれば、canvasを気にする必要はないのでは?
5)Swing自体が非常に優秀であり、その設計思想を使いこなすことで学ぶことができる。
2) 比較的良いJavaの基礎があること
特別な要件(開発の必要性、趣味のふりなど)がない限り、お勧めしません。
Struts、spring、springboot、Hibernateなど、より多くのフレームワークを学んだ方が良い。フロントエンドワードフレームワークnode.js、vue.jsなどを検討してみてください。
必要なスイングは、あなた自身の勉強に戻ることができ、Javaベースは非常に簡単に学ぶことが良いことです。
大物を見て、小さな手を動かして、一攫千金を狙え いいね!」+「返信」+「ブックマーク できる フォロー 波があるといい。
お気軽にコメントを残して、みんなでディスカッションしましょう
関連
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
無効なカラム名、エラーは完全に解決
-
Java静的コード解析 - 仕様チェック - checkstyle
-
解決策 説明 リソースパス 場所 種類 必要なライブラリのアーカイブ
-
SailSoftレポート例外の概要と解決策。
-
Maven の例外:アーティファクト xxxx:pom が見つかりませんでした。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
Easyui Resource が Document と解釈され、MIME タイプが application/json で転送された場合について。
-
Java面接のポイント3--例外処理(Exception Handling)
-
java.sql.SQLException: ユーザー 'root'@'localhost' (パスワード YES を使用) のアクセスが拒否されました。
-
Swing] JLabelの説明と使用例
-
Java ソート例外 比較メソッドの一般契約違反
-
Java8新機能ラムダ式