Javaのエントリからマスター第13章スイングプログラミング

ディレクトリ

一般的なSwingコンポーネント

一般的な形態

コンポーネントとアイコンのラベル

一般的なレイアウトマネージャ

一般的なパネル

Buttonコンポーネント

コンポーネントの一覧

テキストコンポーネント

イベントのための共通のリッスン


一般的なSwingコンポーネント

一般的な形態

フォームSwingコンポーネントは、典型的には、作成したJFrameのオブジェクトそう後、コンポーネントおよびコンテナに関連付けられ、その後、コンポーネントを追加したり、レイアウトマネージャが容器に設けられ、容器内にフォームを変換するgetContentPane()メソッドを呼び出す必要があります。Container.addの()メソッドを使用して、成分を含有し、表示するために使用される容器は、容器アセンブリに加えました。使用Container.removeの()削除コンポーネント。

  • JFrameフォームクラス継承のJFrame
    • コンストラクタ
    • JFrameの();初期化が表示されていない、タイトルなし
    • JFrameの(文字列のタイトル);見えない、タイトル、使用のsetVisible(真)がある。目に見えます
    • タイプフォームが閉じています
    • DO_NOTHING_ON_CLOSE
    • DISPOSE_ON_CLOSE
    • HIDE_ON_CLOSE
    • EXIT_ON_CLOSE
  • JDialogのクラスを継承JDialogのフォーム、
    • コンストラクタ
    • JDialogの();タイトルなし親フォーム
    • JDialogの(フレームF);指定された親ダイアログウィンドウ
    • JDialogの(フレームF、ブーリアンモデル)は、親フォームとダイアログボックスの指定されたタイプを指定します 
    • JDialogの(フレームf、文字列のタイトル);親フォームとタイトルを指定 
    • JDialogの(フレームf、文字列のタイトル、ブールモデル);指定された親フォーム、タイトルやジャンル
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class Example1 extends JFrame {  //定义一个类继承JFrame
    public void CreateJFrame(String title) {  //定义一个CreateJFrame方法
        JFrame jf = new JFrame(title);  //实例化一个JFrame对象
        Container container = jf.getContentPane();  //获取一个容器
        JLabel jl = new JLabel("这是一个JFrame窗体");  //创建一个JLabel标签
        jl.setHorizontalAlignment(SwingConstants.CENTER);  //使标签上的文字居中
        container.add(jl);  //将标签添加到容器中
        container.setBackground(Color.white);  //设置容器的背景颜色
        jf.setVisible(true);  //使窗体可见
        jf.setSize(200, 150);  //设置窗体大小
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  //设置窗体关闭方式
    }

    public static void main(String[] args) {
        new Example1().CreateJFrame("创建一个JFrame窗体");
    }

}
package ex13_Swing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyJDialog extends JDialog {  //创建新类继承JDialog
    public MyJDialog() {  //构造方法
        super(new MyFrame(), "第一个JDialog窗体", true);  //实例化一个JDialog对象,指定对话框的父窗体,窗体标题和类型
        Container container = getContentPane();  //创建一个容器
        container.add(new JLabel("这是一个对话框"));  //在容器中添加标签
        setSize(100, 100);
    }

    public static void main(String[] args) {
        new MyJDialog();
    }
}

class MyFrame extends JFrame {

    public MyFrame() {
        Container container = getContentPane();  //创建一个容器
        container.setLayout(null);
        JLabel jl = new JLabel("这是一个JFrame窗体");  //在窗体中设置标签
        jl.setHorizontalAlignment(SwingConstants.CENTER);  //设置标签的位置
        container.add(jl);
        JButton bl = new JButton("弹出对话框");  //定义一个按钮
        bl.setBounds(10, 10, 100, 21);
        bl.addActionListener(new ActionListener() {  //为按钮添加鼠标单击事件
            @Override
            public void actionPerformed(ActionEvent e) {
                new MyJDialog().setVisible(true);
            }
        });
        container.add(bl);  //将按钮添加到容器中
        container.setBackground(Color.white);  //设置容器的背景颜色
        setSize(200, 200);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        setVisible(true);
    }
}

コンポーネントとアイコンのラベル

  • JLabelのコンストラクタ
    • JLabelの();アイコンとテキストなし
    • JLabelの(アイコンアイコン);アイコンで
    • JLabelの(アイコンアイコン、INT aligment);アイコンで、水平方向の配置
    • JLabelの(文字列テキスト、INT aligment);テキストを、水平配向
    • JLabelの(文字列、テキスト、アイコン、アイコン、INT aligment)、テキスト、アイコン、水平配向方法
  • javax.swing.ImageIconクラスのアイコンを使用する画像
    • getResourceのjava.lang.Classクラス()メソッドは、リソースファイルへのURLパスを取得することができます
//图标的使用
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class DrawIcon implements Icon {  //实现Icon接口
    private int width;  //声明图标的宽
    private int height;  //声明图标的高

    public int getIconWidth() {  //实现getIconWidth()方法
        return this.width;
    }

    public int getIconHeight() {  //实现getIconHeight()方法
        return this.height;
    }

    public DrawIcon(int width, int height) {  //构造方法
        this.width = width;
        this.height = height;
    }

    public void paintIcon(Component arg0, Graphics arg1, int x, int y) {
        arg1.fillOval(x, y, width, height);  //绘制一个图形
    }

    public static void main(String args[]) {
        JFrame jf = new JFrame();  //创建一个JFrame窗口
        Container container = jf.getContentPane();  //创建一个容器
        container.setBackground(Color.white);
        jf.setVisible(true);
        jf.setSize(200,150);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        DrawIcon icon = new DrawIcon(15,15);  //创建标签对象
        //创建一个标签,设置标签上的文字在标签正中间
        JLabel jl = new JLabel("测试12345566661111111", icon, SwingConstants.CENTER);
        container.add(jl);  //添加到容器
    }

}
//图片图标
package ex13_Swing;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class MyImageIcon  {
    public static void main(String[] args) {
        JFrame jf = new JFrame("hi");  //创建窗体对象
        Container container = jf.getContentPane();  //创建容器
        JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);  //创建标签
        //创建图标图片的url,图片方法class文件夹下
        URL url = MyImageIcon.class.getResource("imageButton.jpg");  
        Icon icon = new ImageIcon(url);  //创建图标
        jl.setIcon(icon);  //为标签设置图标
        jl.setHorizontalAlignment(SwingConstants.CENTER);  //设置文字放在标签中间
        jl.setOpaque(false); //设置标签为不透明
        container.add(jl);  //将标签添加至容器

        jf.setSize(500,500);
        jf.setVisible(true);
        jf.setBackground(Color.blue);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

一般的なレイアウトマネージャ

  • 絶対レイアウト
    • Container.setLayout(NULL);レイアウトマネージャをキャンセル
    • 各容器アセンブリのサイズと位置を設定するステップと、Container.setBound()
  • フローレイアウトマネージャ
    • FlowLayoutの(INTアライメント、INT horizGap、INT vertGap)。
    • jf.setLayout(FL)
  • ボーダーレイアウトマネージャ(Swingのデフォルト)
    • 設置位置と追加コンポーネントの同時使用
  • グリッドレイアウトマネージャ
    • グリッドレイアウト(INT行、INT列、INT horizGap、INT vertGap);同様のフローレイアウトマネージャを使用して
//流布局管理器
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class FlowLayoutPosition {
    public static void main(String[] args) {
        JFrame jf = new JFrame("title");  //创建JFrame对象
        Container container = jf.getContentPane();  //创建容器
        //设置jf参数
        jf.setVisible(true);
        jf.setSize(500,500);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //创建流布局管理器对象,设置对齐方式,水平间隔,垂直间隔
        FlowLayout fl = new FlowLayout(FlowLayout.RIGHT, 10,10);
        jf.setLayout(fl);
        for (int i = 0; i < 100; i++) {
            JButton jb = new JButton("button "+ i); //创建JButton对象
            container.add(jb);  //添加到容器
        }
    }
}
//边界布局管理器
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class BorderLayoutPosition {
    public static void main(String[] args) {
        JFrame jf = new JFrame("title");  //创建JFrame对象
        Container container = jf.getContentPane();  //创建容器
        //设置jf参数
        jf.setVisible(true);
        jf.setSize(500, 500);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        BorderLayout bl = new BorderLayout();
        jf.setLayout(bl);  //默认边界布局,可以不写
        //边界布局管理器,上、下、左、右、中
        String[] border = {
                BorderLayout.CENTER,
                BorderLayout.NORTH,
                BorderLayout.SOUTH,
                BorderLayout.WEST,
                BorderLayout.EAST};
        String[] buttonName = {"center", "north", "south", "west", "east"};
        for (int i = 0; i < border.length; i++) {
            JButton jb = new JButton(buttonName[i]);
            container.add(border[i], jb);  //add()方法可以同时添加布局和组件
        }
    }

}

一般的なパネル

Swingのパネルは、java.awt.Containerのからコンテナクラスの継承である他の成分を含むことができるが、それはまた、他のコンテナに追加する必要があります

  • JPanelのパネル
  • JScrollPaneのパネルのスクロールバーだけでなく、容器が、唯一のコンポーネントレイアウトマネージャを使用することができない置くために、JPanelのパネルに必要な複数の構成要素上の複数の成分を必要に応じて、パネルは、次に全体のJPanelとして添加されますJScrollPaneの上

 

//JPanel面板
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class JPanelTest extends JFrame {
    public JPanelTest() {
        Container c = getContentPane();
        //将整个容器设置成2行1列的网格布局
        c.setLayout(new GridLayout(2, 2, 10, 10));
        //初始化面板,设置面板布局
        JPanel jp1 = new JPanel(new GridLayout(1, 4, 10, 10));
        JPanel jp2 = new JPanel(new GridLayout(1, 3, 10, 10));
        JPanel jp3 = new JPanel(new GridLayout(1, 2, 10, 10));
        JPanel jp4 = new JPanel(new GridLayout(1, 5, 10, 10));
        jp1.add(new JButton("1"));  //在面板中添加按钮
        jp1.add(new JButton("2"));
        jp1.add(new JButton("3"));
        jp1.add(new JButton("4"));
        jp2.add(new JButton("21"));
        jp3.add(new JButton("31"));
        jp3.add(new JButton("32"));
        jp4.add(new JButton("41"));
        jp4.add(new JButton("42"));
        jp4.add(new JButton("43"));
        c.add(jp1);  //添加面板到容器
        c.add(jp2);
        c.add(jp3);
        c.add(jp4);
        setVisible(true);
        setSize(500, 500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JPanelTest();
    }
}
//JScroll面板
package ex13_Swing;

import javax.swing.*;
import java.awt.*;

public class JScrollPaneTest extends JFrame {
    public JScrollPaneTest() {
        Container c = getContentPane();
        JTextArea jta = new JTextArea(20, 50);  //创建文本区域组件
        JScrollPane jsp = new JScrollPane(jta);  //创建JScrollPane面板对象,将文本区域组件添加上
        c.add(jsp);
        setTitle("带滚动条的文本编辑器");
        setSize(500, 500);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JScrollPaneTest();
    }
}

Buttonコンポーネント

  • JButtonの(文字列のテキスト、アイコンのアイコン);ボタンコンポーネントを提出
  • JRadioButton();ラジオボタンアセンブリ、パネルの全てを追加するためのボタンが、パネルが容器に添加され、グループは、すべてのラジオボタンに追加され
  • JCheckBoxの();パネルに複数のチェックボックスを追加し、あなたはまた、各イベントリスナーのチェックボックスを追加することができます

 

//提交按钮、单选按钮
package ex13_Swing;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class JButtonTest extends JFrame {
    public JButtonTest() {
        Container c = getContentPane();
        URL url = JButtonTest.class.getResource("imageButton.jpg");
        Icon icon = new ImageIcon(url);
        //设置布局3行2列,间隔为5
        setLayout(new GridLayout(5, 1, 5, 5));
        JButton jb1 = new JButton("button1", icon);
        JButton jb2 = new JButton("button2", icon);
        JButton jb3 = new JButton("button3", icon);
        JButton jb4 = new JButton();  //实例化一个没有文字的按钮
        add(jb1);
        add(jb2);
        add(jb3);
        add(jb4);
        jb2.setEnabled(false);  //设置按钮不可用
        jb4.setMaximumSize(new Dimension(10, 10));//设置按钮与图片大小相同
        jb4.setIcon(icon);  //为按钮设置图标
        jb4.setHideActionText(true);
        jb4.setToolTipText("图片按钮");  //设置按钮的提示文字,鼠标指向按钮时
        jb4.setBorderPainted(false);  //设置图标按钮边界不显示
        jb4.addActionListener(new ActionListener() {  //为按钮添加监听事件
            @Override
            public void actionPerformed(ActionEvent e) {
                //弹出确认对话框
                JOptionPane.showMessageDialog(null, "弹出对话框");
            }
        });
        //单选按钮组件
        JRadioButton jrb1 = new JRadioButton();
        JRadioButton jrb2 = new JRadioButton();
        JRadioButton jrb3 = new JRadioButton();
        ButtonGroup bg = new ButtonGroup();  // 添加到组后才是单选按钮
        bg.add(jrb1);
        bg.add(jrb2);
        bg.add(jrb3);
        JPanel jp = new JPanel();  //创建面板
        jp.add(jrb1);
        jp.add(jrb2);
        jp.add(jrb3);
        jp.setBorder(new TitledBorder("TitleBorder"));
        add(jp);


        setVisible(true);
        setSize(500, 500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JButtonTest();
    }
}
//复选框组件
package ex13_Swing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CheckBoxTest extends JFrame {
    public CheckBoxTest() {
        Container c = getContentPane();  //创建容器
        setLayout(new BorderLayout());
        JPanel jp1 = new JPanel();  //创建面板
        JPanel jp2 = new JPanel();

        JCheckBox jc1 = new JCheckBox("1");  //创建复选框
        JCheckBox jc2 = new JCheckBox("2");
        JTextArea jt = new JTextArea(20, 20);  //创建编辑器
        final JScrollPane jsp1 = new JScrollPane(jt);  //创建滑动面板

        jp1.add(jsp1);  //面板1添加编辑器
        jp2.add(jc1);  //面板2添加复选框
        jp2.add(jc2);  //面板2添加复选框
        jc1.addActionListener(new ActionListener() {  //复选框添加监听事件
            @Override
            public void actionPerformed(ActionEvent e) {
                jt.append("复选框1被选中\n");
            }
        });
        jc2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jt.append("复选框2被选中\n");
            }
        });

        c.add(jp1, BorderLayout.NORTH);  //添加面板到容器
        c.add(jp2, BorderLayout.SOUTH);


        setSize(500, 500);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new CheckBoxTest();
    }
}

コンポーネントの一覧

  • ドロップダウンリストコンポーネント
    • JComboBoxの()、ドロップダウンリスト項目はJComBoxModel型、アレイ又はベクトルとしてパッケージ化することができます
  • [コンポーネント]リストボックス
    • JListの()、配列、ベクトル型とタイプするListModel

テキストコンポーネント

  • テキストボックスコンポーネント
    • JTextFieldの()
  • [パスワード]ボックスアセンブリ
    • JPasswordFieldの()
  • テキストフィールドコンポーネント
    • JTextAreaの(); trueにsetLineWrapクラスが存在する()メソッドのセット、ラップ

イベントのための共通のリッスン

  • アクションリスナーイベント
    • addActionListener(新しいjbAction);クラスjbAction内に実装ActionListenerインタフェース、書き換え方法のactionPerformed
    • addActionListener(新新ActionListen(){
      公共空のactionPerformed(のActionEventのarg0){
      //何かを行う
      }});実装は匿名内部クラスを使用して
  • 交差点のモニター・イベント
    • addFocusListener(のFocusListener新しい新しい(){
      組み立て方法がフォーカスを失ったときに呼び出されるパブリックボイドのfocusLost(のFocusEvent arg0に){//
      //何かを行う
      }
      コンポーネントが//フォーカスを取得する際のfocusGained(のFocusEvent arg0に)メソッドが呼び出される空隙公開
      })。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

公開された46元の記事 ウォンの賞賛0 ビュー1025

おすすめ

転載: blog.csdn.net/weixin_37680513/article/details/103412860