GUI圖形用戶界面(Swing窗體)---課堂筆記(附源碼)

Swing窗體(JFrame)

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

小問題

​ 之前學過Awt包,繼承Frame類的那個窗體,有個很大的問題是,它不行正常的顯示中文在控件上,這就很難受。經過學習,我發現Swing窗體是沒有這個問題的,當然也可能是我電腦的問題。

Swing&AWT功能

  • 界面設計
    • 窗體、控件、面板、佈局管理
    • 事件處理機制

Swing&AWT區別

  • 兩個是圖形界面包
  • AWT做圖形,使用本地操系統方法,圖像界面與本地操作系統一致
  • Swing做圖形,使用自己的方法,與平臺無關。
  • 使用Swing方式

一、Swing概述

1、完成第一個窗體

  • 使用java.swing包
  • 借用JFrame類
    • 繼承
  • 設計窗體
    • 設置窗體大小
    • 設置標題
    • 設置關閉窗體按鈕
    • 設置窗體顯示
import javax.swing.*;
public class JFrameTextRun {
    public static void main(String[] args) {
        new JFrameText();
    }
}
class JFrameText extends JFrame{
    public JFrameText(){
        init();
    }
    public void init(){
        setTitle("啦啦啦窗口標題");
        setBounds(500,500,400,300);
//        setSize(400,300); //大小 //同上
//        setLocation(500,500);//啓動方位
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置默認的關閉方式
        setVisible(true);//窗口是否可見
    }
}

運行結果

在這裏插入圖片描述

2、向窗體添加控件

  • 繼承窗體
  • 添加自己的控件
    • 做爲窗體的成員屬性
    • 設置控件的屬性

2.1、JTextField方法:

方法 說明
JTextField() 構造新的文本輸入框
JTextField(String text) 構造一個新的文本輸入框,以指定文本作爲初始文本
getColumns() 返回文本字段中的列數
setColumns(int columns) 設置最多可顯示內容的列數
setHorizontalAlignment(int value) 設置文本字段中文本的水平對齊方式:JTextField.LEFT
JTextField.CENTER
JTextField.RIGHT
import javax.swing.*;

public class JFrameTextRunA{
    public static void main(String[] args) {
        new JFrameTextA();
    }
}
class JFrameTextA extends JFrame{
    public JFrameTextA(){
        init();
    }
    public void init(){
        setTitle("啦啦啦窗口標題");
        setBounds(500,500,400,300);
//        setSize(400,300); //大小 //同上
//        setLocation(500,500);//啓動方位
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置默認的關閉方式
        setVisible(true);//窗口是否可見
        setResizable(false);
//------------------------------------------------------------------------
//2、向窗體添加控件
// 2.1、JTextField方法:
        JTextField JTF1 = new JTextField();//構造新的文本輸入框
        JTextField JTF2 = new JTextField("啦啦啦文本輸入框",1);//構造一個新的文本輸入框,以指定文本作爲初始文本
        JTextField JTF3 = new JTextField(5);
        JTF1.setBounds(20,20,200,50);
        JTF2.setBounds(20,80,200,50);
        JTF3.setBounds(20,140,200,50);
        add(JTF1);
        add(JTF2);
        JTF3.setColumns(6);
        JTF3.setText(String.valueOf(JTF3.getColumns()));//返回文本字段中的列數
        JTF3.setColumns(6);
        JTF3.setHorizontalAlignment(JTF3.RIGHT);//設置對齊方式
        add(JTF3);
    }
}

遺留問題:getColumns()

2.2、JButton方法:

方法 說明
JButton() 創建不帶文本和圖標的按鈕
JButton(Icon icon) 創建帶圖標的按鈕
JButton(String text) 創建帶文本的按鈕
JButton(String text,Icon icon) 創建帶文本和圖標的按鈕
setRolloverlcon(Icon img) 當鼠標經過時,顯示指定的圖標
setSelectedlcon(Icon img) 當選擇按鈕時,顯示img指定的圖標
import javax.print.attribute.standard.JobName;
import javax.swing.*;
import java.awt.*;

public class TextJButton {
    public static void main(String[] args) {
        new winFrame();
    }
}
class winFrame extends JFrame{
    public winFrame(){
        init();
    }

    public void init(){
        setTitle("窗口標題");
        setBounds(500,300,500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        //創建容器
        Container container = this.getContentPane();
        container.setLayout(null);//絕對佈局
        ////////////////////////////////////////////////
        //創建不帶文本和圖標的按鈕
        JButton jButton = new JButton();
//        jButton.setText("按鈕A");
        jButton.setBounds(0,10,200,50);
        container.add(jButton);
        /////////////////////////////////////////////////
        //創建帶圖標的按鈕
        JButton jButton1 = new JButton(new ImageIcon(".\\icon\\如何養豬.jpg"));
        jButton1.setBounds(0,70,200,200);
        container.add(jButton1);
        /////////////////////////////////////////////////
        //創建帶文本的按鈕
        JButton jButton2 = new JButton("按鈕B,因爲A沒顯示,哈哈哈");
        jButton2.setBounds(0,280,200,50);
        container.add(jButton2);
        /////////////////////////////////////////////////
        //創建帶文本和圖標的按鈕
        JButton jButton3 = new JButton("按鈕C"/*當圖片不存在時顯示*/,
                new ImageIcon(".\\icon\\花瓣.png"));
        jButton3.setBounds(0,340,300,100);
        container.add(jButton3);
        //當鼠標經過時,顯示指定的圖標setRolloverIcon
        JButton jButton4 = new JButton();
        jButton4.setBounds(210,10,150,200);
        jButton4.setRolloverIcon(new ImageIcon(".\\icon\\淋光.jpg"));
        jButton4.setSelectedIcon(new ImageIcon(".\\icon\\淋光.jpg"));
        container.add(jButton4);
    }
}

遺留問題:setRolloverIcon|setSelectedIcon

2.3、JCheckBox

方法 說明
JCheckBox() 創建初始非選中的複選框,且不帶文本或圖標
JCheckBox(String text) 用指定的文本創建初始非選中的複選框
JCheckBox(String text,boolean selected) 用指定文本創建一個複選框,並指定是否初始選中該複選框
import javax.swing.*;
import java.awt.*;

public class JCheckBoxText {
    public static void main(String[] args) {
        new JFrameText1();
    }
}
class JFrameText1 extends JFrame {
    public JFrameText1(){
        init();
    }
    public void init(){
        setTitle("窗口標題");
        setVisible(true);
        setBounds(500,300,500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        Container container=this.getContentPane();
        container.setLayout(null);
        /////////////////////////////////////////////
        //創建初始非選中的複選框,且不帶文本或圖標
        JCheckBox jCheckBox = new JCheckBox();
        jCheckBox.setBounds(0,10,50,50);
        container.add(jCheckBox);
        //////////////////////////////////////////
        //用指定的文本創建初始非選中的複選框
        JCheckBox jCheckBox1 = new JCheckBox("複選框B");
        jCheckBox1.setBounds(0,70,100,50);
        container.add(jCheckBox1);
        ////////////////////////////////////////////
        //用指定文本創建一個複選框,並指定是否初始選中該複選框
        JCheckBox jCheckBox2 = new JCheckBox("複選框C",true);
        jCheckBox2.setBounds(0,130,100,50);
        container.add(jCheckBox2);
    }


}

2.4、JRadioButton

方法 說明
JRadioButton 創建初始非選中的單選按鈕,不設置其文本
JRadioButton(String text) 用指定的文本創建非選中的單選按鈕
JRadioButton(String text,boolean selected) 用指定的文本和選中狀態創建單選按鈕
import javax.swing.*;
import java.awt.*;

public class JRadioButtonText {
    public static void main(String[] args) {
        new WindJFrame();
    }
}
class WindJFrame extends JFrame {
    public WindJFrame(){
        init();
    }
    public void init(){
        setTitle("窗口標題");
        setVisible(true);
        setBounds(500,300,500,500);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container container = this.getContentPane();
        container.setLayout(null);
        //////////////////////////////////////////
        //創建初始非選中的單選按鈕,不設置其文本
        JRadioButton jRadioButton = new JRadioButton();
        jRadioButton.setBounds(0,10,200,100);
        container.add(jRadioButton);
        //////////////////////////////////////////
        //用指定的文本創建非選中的單選按鈕
        JRadioButton jRadioButton1 = new JRadioButton("單選按鈕B");
        jRadioButton1.setBounds(0,120,200,100);
        container.add(jRadioButton1);
        ///////////////////////////////////////////
        //用指定的文本和選中狀態創建單選按鈕
        JRadioButton jRadioButton2 = new JRadioButton("單選按鈕C",true);
        jRadioButton2.setBounds(0,230,200,100);
        container.add(jRadioButton2);

    }
}

2.5、JComboBox

方法 說明
JcomboBox() 創建一個下拉框實例
addItem(Object obj) 將項添加至項的列表
getItemAt(int index) 返回指定索引位置的列表項
getItemCount() 返回列表(作爲對象)中的項數
getSelectedItem() 將當前選擇的項作爲一個對象返回
getSelectedIndex() 返回當前選擇項的索引位置
import javax.swing.*;
import java.awt.*;

public class JComboBoxText {
    public static void main(String[] args) {
        new WindowJFrame();
    }
}
class WindowJFrame extends JFrame{
    JButton jButton;
    JTextField jTextField1;
    JComboBox jComboBox;
    public WindowJFrame(){
        init();
    }
    public void init(){
        setTitle("窗口標題");
        setVisible(true);
        setBounds(500,300,500,500);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container container=this.getContentPane();
        container.setLayout(null);//設置絕對佈局
        //////////////////////////////////////////
        //創建一個下拉框實例
        //將項添加至項的列表addItem(Object obj)
        jComboBox = new JComboBox();
        jComboBox.setBounds(0,10,400,30);
        jComboBox.addItem(new String("1"));
        jComboBox.addItem(new String("2"));
        jComboBox.addItem(new String("4"));
        container.add(jComboBox);
        //返回指定索引位置的列表項getItemAt(int index)
        JTextField jTextField = new JTextField(String.valueOf(jComboBox.getItemAt(2)));
        jTextField.setBounds(0,80,400,30);
        container.add(jTextField);
        //返回列表(作爲對象)中的項數getItemCount()
        jTextField1 = new JTextField(String.valueOf(jComboBox.getItemCount()));
        jTextField1.setBounds(0,120,400,30);
        container.add(jTextField1);
        System.out.println(jComboBox.getSelectedItem());
        System.out.println(jComboBox.getSelectedIndex());
    }
}

3、控件共同特性

  • 所有控件都繼承Jcomponent類
  • 共同方法
    • setText();
    • getText();
    • setFont(font);
    • setBackground(Color);
    • setBound(x,y,width,length);

4、佈局管理

4.1、BorderLayout佈局

邊界佈局管理器,將容器劃分爲5個部分

  • 不是五個部分都必須添加控件
  • 中間組件會自動的調節大小(中間部分最強勢)
  • JFrame,JDialog默認佈局管理器就是BorderLayout
方法 說明
BorderLayout 創建新的BorderLayout,組件之間沒有間距
setHgap(int hgap) 將組件間的水平間距設置爲指定的值
setVgap(int vgap) 將組件間的垂直間距設置爲指定的值
import javax.swing.*;
import java.awt.*;

public class BorderLayoutText extends JFrame {
    private JButton jb1,jb2,jb3,jb4,jb5;
    public BorderLayoutText(){
        //創建組件
        jb1=new JButton("中");
        jb2=new JButton("北");
        jb3=new JButton("東");
        jb4=new JButton("南");
        jb5=new JButton("西");
        //添加組件
        add(jb1, BorderLayout.CENTER);
        add(jb2, BorderLayout.NORTH);
        add(jb3, BorderLayout.EAST);
        add(jb4, BorderLayout.SOUTH);
        add(jb5, BorderLayout.WEST);
        //設置窗體屬性
        //窗口標題
        setTitle("邊界佈局案例");
        //設置窗體大小
        setSize(500,500);
        //設置窗體位置
        setLocation(500,300);
//        setBounds(500,300,500,500);
        //設置關閉窗體同時退出JVM
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //顯示窗體
        setVisible(true);
        //窗口是否可以拖放大
        setResizable(false);
    }
}
class RunText{
    public static void main(String[] args) {
        new BorderLayoutText();
    }
}

4.2、FlowLayout佈局

流佈局是面板的默認佈局管理器

方法 說明
FlowLayout() 構造新的中間對齊的FlowLayout,將垂直和水平間距保留爲5個像素
setAlignment(int align) 設置指定佈局的對齊方式
setHgap(int hgap) 設置指定佈局的水平間距
setVgap(int vgap) 設置指定佈局的垂直間距

特點:

  • 不限制他所管理的組件的大小,允許他們有最佳大小
  • 當容器被縮放時,組件的位置可能發生變化,但是組件的大小不變
  • 默認組件是居中對齊,可以通過FlowLayout(intalign)函數來指定對齊方式
import javax.swing.*;
import java.awt.*;

public class FlowLayoutText extends JFrame {
    public static void main(String[] args) {
        new FlowLayoutText();
    }
    public FlowLayoutText(){
        super();
        setTitle("流佈局管理器測試");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500,300,200,200);

        Container container = this.getContentPane();//創建容器
        container.setLayout(new FlowLayout(/*FlowLayout.LEFT*/));//設置容器佈局
        //創建組件
        final JButton jButton = new JButton("金");
        final JButton jButton1 = new JButton("木");
        final JButton jButton2 = new JButton("水");
        final JButton jButton3 = new JButton("火");
        final JButton jButton4 = new JButton("土");
        //添加組件
        container.add(jButton);
        container.add(jButton1);
        container.add(jButton2);
        container.add(jButton3);
        container.add(jButton4);

        //設置佈局管理器,流式佈局默認是中間對齊
        //我們要在new FlowLayout(FlowLayout.LEFT)設置,<-此時設置的左對齊

    }


}

4.3、GridLayout佈局

網格佈局特點

  • 組件的相對位置不會隨容器變化,但組件的大小會變
  • 所有組件的大小是相同的
  • 可以通過GridLayout(int rows,int cols,int hgap,int vgap)來指定網格的行/列,水平間隙/垂直間隙
方法 描述
GridLayout() 創建網格佈局,默認爲每個組件佔用一整列和一單行
GridLayout(int rows,int cols) 用指定的行數和列數創建網格佈局
GridLayout(int rows,int cols,int hgap,int vgap) 用指定的行數和列數、指定的水平個垂直間距創建網格佈局
setColumns(int cols) 將相應的佈局中的列數設置爲指定值
setHgap(int hgap) 將相應的佈局中的水平間距設置爲指定值
setVgap(int vgap) 將相應的佈局中的垂直間距設置爲指定值
setRows(int rows) 將相應佈局中的行數設置爲指定值
import javax.swing.*;
import java.awt.*;

public class GridLayoutText extends JFrame {
    int size=9;
    private JButton jbs[] = new JButton[size];
    public static void main(String[] args) {
        new GridLayoutText();
    }
    public GridLayoutText(){
        //創建組件
        for (int i = 0; i < size; i++) {
            jbs[i] = new JButton(String.valueOf(i));
        }
        Container container = this.getContentPane();
        //設置網格佈局管理器,設置3行3列,每個組件間隔水平方向10,垂直方向10個像素
        container.setLayout(new GridLayout(3,3,10,10));
        //添加組件
        for (int i = 0; i < size; i++) {
            container.add(jbs[i]);
        }
        //設置窗體
        setTitle("網格佈局測試");
        setSize(500,500);
        setLocation(500,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}

5、事件處理

5.1、動作事件ActionEvent

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionEventText extends JFrame {
    private JLabel label;//標籤

    public static void main(String[] args) {
        new ActionEventText();
    }
    public ActionEventText(){
        super();//調用父類方法,詳細功能在面向對象一章博客文檔
        setTitle("動作事件示例");//標題
        setBounds(100,100,500,375);//大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉方式
        setVisible(true);//窗口是否可見
        setResizable(false);//窗口是否可以自由調整大小
        //以上代碼最後一次備註
        ///////////////////////////////////////////////////
        //添加標籤
        label = new JLabel("歡迎登錄");
//        label.setText("歡迎登錄");
        label.setHorizontalAlignment(JLabel.CENTER);//設置對齊方式
        Container container=this.getContentPane();//創建一個容器
        container.add(label);

        //添加按鈕
        final JButton jButton = new JButton("登錄");
//        jButton.setText("登錄");
        jButton.addActionListener(new ButtonActionText());
        container.add(jButton,BorderLayout.SOUTH);
    }
    //按鈕監聽器
    class ButtonActionText implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //獲得觸發此事件的按鈕對象
            JButton jButton= (JButton) e.getSource();
            //獲取觸發此事件的標籤文本
            String jButtonName=e.getActionCommand();
            if (jButtonName.equals("登錄")){
                label.setText("您已成功登錄");//修改標籤提示信息
                jButton.setText("退出");//修改按鈕提示信息
            }else{
                label.setText("您已安全退出");
                jButton.setText("登錄");
            }
        }
    }
}


5.2、FocusEvent焦點事件

import javax.swing.*;
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class FocusEventText extends JFrame {
    private JTextField textField;
    public static void main(String[] args) {
        FocusEventText focusEventText = new FocusEventText();
    }
    public FocusEventText(){
        setTitle("焦點事件示例");
        setBounds(100,100,500,375);
        setVisible(true);
        getContentPane().setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JLabel jLabel = new JLabel();//創建標籤
        jLabel.setText("出生日期");
        getContentPane().add(jLabel);

        textField = new JTextField();
        textField.setColumns(10);//設置對多可顯示內容的列數
        textField.addFocusListener(new TextFocusListener());
        getContentPane().add(textField);

        final JButton jButton = new JButton();
        jButton.setText("確定");
        getContentPane().add(jButton);

    }

    class TextFocusListener implements FocusListener {
        @Override
        public void focusGained(FocusEvent e) {//獲取焦點時做什麼
            textField.setText("");
        }

        @Override
        public void focusLost(FocusEvent e) {//失去焦點時做什麼
            textField.setText("2001-01-16");
        }
    }
}

5.3、鼠標事件

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MouseEventText extends JFrame {
    public static void main(String[] args) {
        new MouseEventText();
    }
    public MouseEventText(){
        super();//繼承父類構造器
        setTitle("鼠標事件處理");
        setBounds(100,100,500,375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        final JLabel jLabel = new JLabel();//添加標籤
        jLabel.setText("Hello");
        //MouseAdapter適配器  MouseListener
        //MouseAdapter適配器實現了MouseListener接口,
        // 這樣做可以讓你不用重寫MouseListener接口中所有的方法
        //只需要重寫你需要的方法。
        /**jLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("光標移入組件");
            }

        });*/
        jLabel.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("單擊了鼠標按鍵");
                int i=e.getButton();//獲取你單擊的鍵,返回一個int值
                if (i==MouseEvent.BUTTON1)//1
                    System.out.println("單擊了左鍵1111");
                if (i==MouseEvent.BUTTON2)//2
                    System.out.println("單擊中鍵2222");
                if (i==MouseEvent.BUTTON3)//3
                    System.out.println("單擊右鍵3333");
                int clickCount=e.getClickCount();//獲取鼠標單擊次數
                System.out.println(clickCount);

            }

            //mousePressed鼠標按鍵被按下
            //可以判斷是哪個鼠標按鍵
            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("鼠標按鍵被按下");
                int i=e.getButton();//獲取你按下的鍵,返回一個int值
                if (i==MouseEvent.BUTTON1)
                    System.out.println("按下了左鍵1111");
                if (i==MouseEvent.BUTTON2)
                    System.out.println("按下中鍵2222");
                if (i==MouseEvent.BUTTON3)
                    System.out.println("按下右鍵3333");
            }

            //mouseReleased鼠標按鍵被按下
            //可以判斷是哪個鼠標按鍵
            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("鼠標按鍵被釋放");
                int i=e.getButton();//獲取你釋放的鍵,返回一個int值
                if (i==MouseEvent.BUTTON1)//1
                    System.out.println("釋放了左鍵1111");
                if (i==MouseEvent.BUTTON2)//2
                    System.out.println("釋放中鍵2222");
                if (i==MouseEvent.BUTTON3)//3
                    System.out.println("釋放右鍵3333");
            }

            //mouseEntered(移入)
            //mouseExited(移除)
            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("光標移入組件");
            }
            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("光標移出組件");
            }
        });
        getContentPane().add(jLabel, BorderLayout.CENTER);
    }
}

5.3、鍵盤事件

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class KeyEventText extends JFrame {
    public static void main(String[] args) {
        new KeyEventText();
    }
    public KeyEventText(){
        super();
        setTitle("鍵盤事件示例");
        setBounds(100,100,500,375);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container container = this.getContentPane();


        final JLabel jLabel = new JLabel();
        jLabel.setText("備註:");
        container.add(jLabel, BorderLayout.WEST);

        final JScrollPane jScrollPane = new JScrollPane();
        container.add(jScrollPane, BorderLayout.CENTER);

        final JTextArea jTextArea = new JTextArea();
        jTextArea.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {//發生鍵盤事件
                System.out.println("此次輸入的是“"+e.getKeyChar()+"”");
            }

            @Override
            public void keyPressed(KeyEvent e) {
                //getKeyCode獲取這個鍵對應的Code碼
                String keyText = KeyEvent.getKeyText(e.getKeyCode());
                if (e.isActionKey()){//是否是動作鍵
                    System.out.println("你按下的是動作鍵");
                }else {
                    System.out.println("你按下的是非動作鍵“"+keyText+"”");
                    //getKeyChar 返回每次敲擊的字符,其實看單詞就能看出來了
                    char keyChar = e.getKeyChar();
                    switch (keyChar){
                        case KeyEvent.VK_CONTROL:
                            System.out.println("你按下了Ctrl");
                            break;
                        case KeyEvent.VK_SHIFT:
                            System.out.println("你按下了SHIFT");
                            break;
                        case KeyEvent.VK_ALT:
                            System.out.println("你按下了ALT");
                            break;
                    }
                }

            }

            @Override
            public void keyReleased(KeyEvent e) {//鍵盤鍵被釋放
                String KeyText = KeyEvent.getKeyText(e.getKeyCode());
                System.out.println("你釋放的是“"+KeyText+"”鍵");
                System.out.println();
            }
        });
        jTextArea.setLineWrap(true);//設置自動換行
        jTextArea.setRows(3);
        jTextArea.setColumns(15);
        jScrollPane.setViewportView(jTextArea);
    }
}

ps:不知道怎麼回事,運行出來窗體控件不會顯示,得拖動一下窗口邊框大小纔可以,如果有看到知道怎麼回事的朋友,還請回復告訴我一下下,嘻嘻。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章