UIコンポーネントの概要
Swingの学習を開始する前に、実際の初心者向けの質問に答える必要があります。UIとは何ですか。初心者向けの答えは「ユーザーインターフェース」です。ただし、このチュートリアルの目的は、初心者ではないことを確認することであるため、これよりも高度な定義が必要です。
それで、私はこの質問をもう一度します:UIとは何ですか?押すボタン、入力用のアドレスバー、開いたり閉じたりするウィンドウなどとして定義できます。これらはすべてUI要素ですが、画面に表示される要素に加えて、さらに多くの要素があります。 UI要素です。マウス、キーボード、音量、画面の色、使用するフォント、別のオブジェクトに対するオブジェクトの位置などはすべてUIに含まれています。実際、コンピューターとユーザーの間の相互作用で役割を果たすオブジェクトは、UIの不可欠な部分です。これは簡単に思えますが、多くの人や大企業が長年にわたって取り組んできたことに驚かれるはずです。実際、一部の大学専攻の唯一のコースは、この種の相互作用を研究することです。
Swingは、Javaアプリケーションのユーザーインターフェイスを開発するために使用される開発キットです。Javaの視覚的なインタラクティブインターフェイスを提供し、コンソールなしでプログラムを実行できるようにします。
次に、Swingパッケージの特定のコンテンツを確認します。
JFrame:代表一个界面的窗口,也就是一个程序的门面,我们在创建图形化界面的时候必须要首先创建这个窗口
JLabel:这是一个标签组件,仅仅用于显示文字,图像等内容。这是Swing最简单的一个组件。
JBtton:这是按钮组件,我们可以为其添加事件。
JTextField:这是一个单行文本框,用于接收输入的文本
JPasswordField:这是一个密码文本框
Jpanel:这是一个面板组件,相当于一个小容器
次に、単純な「HelloWorld」コードを使用してJavaSwingがどのように表示されるかを見てみましょう。
package swing;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class HelloWorldSwing {
/**{
* 创建并显示GUI。出于线程安全的考虑,
* 这个方法在事件调用线程中调用。
*/
private static JFrame frame;
private static JLabel label;
private static void createAndShowGUI() {
// 创建及设置窗口
frame = new JFrame("HelloWorldSwing");
//创建容器
Container c=frame.getContentPane();
// 添加 "Hello World" 标签
label = new JLabel("Hello World");
//设置标签居中显示
label.setHorizontalAlignment(SwingConstants.CENTER);
c.add(label);
// 显示窗口
frame.setSize(500,500);
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
上記のコードからわかるように、最初にウィンドウをインスタンス化し、次にgetContentPane()メソッドを介してContainerクラスを取得します。
Swingコンポーネントのウィンドウは通常、コンポーネントとコンテナに関連しているという概念が必要です。したがって、JFrameウィンドウオブジェクトを作成した後、getContentPane()メソッドを呼び出してウィンドウをコンテナに変換し、さまざまなコンポーネントを追加して、レイアウトを設定します。コンポーネントをコンテナに追加する必要がある場合は、Containerクラスのadd()メソッドを使用してコンポーネントを追加できます。
たとえば、上記のコードは次のとおりです。
c.add(label);
このコードでは、add()メソッドを使用してラベルコンポーネントをコンテナに追加します。
其实这个Swing无非就是将一个个组件添加到容器中去,设置组件的属性(对齐方式啊,颜色啊,大小啊),为组件添加响应事件(按了这个按钮会怎样,离开这个文本框会怎样等等),设置布局管理器(就是设置各个组件的排列方式)。
次に、上記のプログラムを変更し、プログラムにボタンを追加します。このボタンを押した後、インターフェイスに表示されるテキストを「Hello、world」にします。
public class HelloWorldSwing {
/**{
* 创建并显示GUI。出于线程安全的考虑,
* 这个方法在事件调用线程中调用。
*/
private static JFrame frame;
private static JLabel label;
private static JPanel jp1;
private static JPanel jp2;
private static Button change;
private static void createAndShowGUI() {
// 创建及设置窗口
frame = new JFrame("Hello World");
Container c=frame.getContentPane();
// 添加 "Hello World" 标签
label = new JLabel("Hello World");
//实例化按钮组件
change=new Button("change");
//为按钮添加响应时间
change.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//改变标签中的文字
label.setText("你好,世界");
}
});
//设置居中显示
label.setHorizontalAlignment(SwingConstants.CENTER);
//实例化面板
jp1=new JPanel();
jp2=new JPanel();
//向面板中添加内容
jp1.add(label);
jp2.add(change);
//向容器中添加内容
c.add(BorderLayout.NORTH,jp1);
c.add(BorderLayout.SOUTH,jp2);
// 显示窗口
frame.setSize(500,500);
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
上記のコードでは、2つのJPanelパネルを追加したことがわかります。これは、「ラベル」と「ボタン」を分離するためです。次に、ボタンコンポーネントを作成し、それにリスナーイベントを追加しました。内容は、ラベルのテキストを変更することです。次に、「label」と「button」をそれぞれ2つのパネルに追加し、「BorderLayout」のレイアウトに従ってパネルをコンテナに追加します。
再びストレス
Swingは、各コンポーネントをコンテナに追加し、コンポーネントのプロパティ(配置、色、サイズ)を設定し、コンポーネントに応答イベントを追加する(このボタンを押したときに何が起こるか、テキストボックスを離れたときに何が起こるかなど)にすぎません。 )、レイアウトマネージャを設定します(つまり、各コンポーネントの配置を設定します)。
さて、このコンセプトの後、私たちはSwingを楽しく学ぶことができます