java的圖形界面初學慣用

来源:http://www.cnblogs.com/zhylioooo/archive/2017/11/24/7891962.html
-Advertisement-
Play Games

1、單一界面的創建 2、常用操作方法 3、有些組件setSize不起作用時,用setPreferredSize,例如button.setPreferredSize(new Dimension(60, 22)); 4、表格一般用模型創建,方便更新管理: 表格數據的清除和更新: 5、消息提示框 ...


1、單一界面的創建

public void mainFrame() {
        HashMap<String, Component> views = new HashMap<String, Component>();
        JFrame jf = new JFrame("title"); // 實例化一個JFrame對象
        jf.setSize(500,300); // 設置窗體大小位置
        jf.setLayout(null);//無佈局
        jf.setResizable(false);//不可最大小化
        jf.setIconImage(new ImageIcon("image/abc.jpg").getImage());//圖標
        // 設置窗體關閉方式
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setVisible(true); // 使窗體可視
        //窗體居中
        Dimension s = Toolkit.getDefaultToolkit().getScreenSize();
        jf.setLocation((s.width - jf.getWidth()) / 2, (s.height - jf.getHeight()) / 2);
        
        //各種組件和容器
        JPanel panel;
        JLabel label;
        JTextField tfield;
        JButton button;
        JComboBox<String> combox;
        //...
        
        //第一個容器
        panel = new JPanel();
        panel.setBounds(0, 0, 1000, 40);
        //容器內佈局
        panel.setLayout(new FlowLayout(FlowLayout.LEFT));
        //容器加到窗體
        jf.add(panel);
        
        //第一個組件JLabel
        label = new JLabel("我是Label");
        //組件加到容器
        panel.add(label);
        //第二個組件JTextField
        tfield = new JTextField(22);
        tfield.setFont(new Font("", 0, 16));
        // tfield.setEditable(false);
        panel.add(tfield);
        //把需要操作的組件加到HashMap<String, Component>,方便調用
        views.put("txt_code", tfield);
        
        //後繼增加...
    }

2、常用操作方法

字元串常用操作
    length()            //獲取字元串的長度
    startsWith(Strings)、endsWith(String s)         //判斷字元串的首碼或尾碼與已知字元串是否相同首碼
    equals(String s)            //比較兩個字元串
    Integer.parseInt(字元串)
    Long.parseLong(字元串)
    Folat.valueOf(字元串).floatValue()
    Double.valueOf(字元串).doubleValue()    //把字元串強制轉換
    valueOf(數值)        //將數值轉化為字元串
字元串檢索:
    indexOf(Srting s)     //從頭開始檢索
    indexOf(String s ,int startpoint)     //從startpoint處開始檢索,如果沒有檢索到,將返回-1
字元串截取:
    substring(int startpoint)     //從startpoint處開始獲取
    substring(int start,int end)     //從start到end中間的字元
替換字元串中的字元:
    replace(char old,char new)         //用new替換old
分析字元串
    StringTokenizer(String s)     //構造一個分析器,使用預設分隔字元(空格,換行,回車,Tab,進紙符)
    StringTokenizer(String s,String delim)     //delim是自己定義的分隔符
    nextToken()     //逐個獲取字元串中的語言符號
    boolean hasMoreTokens()     //只要字元串還有語言符號將返回true,否則返回false
    countTokens()     //得到一共有多少個語言符號
    
文本框和文本區
文本框
    TextField() //構造文本框,一個字元長、TextField(int x) 構造文本框,x個字元長
    TextField(String s)     //構造文本框,顯示s、setText(String s) 設置文本為s
    getText()         //獲取文本
    setEchoChar(char c) //設置顯示字元為c
    setEditable(boolean)     //設置文本框是否可以被修改
    addActionListener()     //添加監視器
    removeActionListener()     //移去監視器
文本區
    TextArea()     //構造文本區
    TextArea(String s)     //構造文本區,顯示s
    TextArea(String s,int x,int y) //構造文本區,x行,y列,顯示s
    TextArea(int x,int y) //構造文本區,x行,y列
    TextArea(String s,int x,ing y,int scrollbar)
    scrollbar的值是:
    TextArea.SCROLLBARS_BOTH;TextArea.SCROLLBARS_VERTICAL_ONLY
    TextArea.SCROLLBARS_HORIZONTAL_ONLY;TextArea.SCROLLBARS_NONE
    setText(String s)     //設置文本為s;getText() 獲取文本
    addTextListener()     //添加監視器;removeTextListener() 移去監視器
    insert(String s,int x)     //在x處插入文本s
    replaceRange(String s,int x,int y)     //用s替換從x到y處的文本
    append(String s)     //在文本的最後追加文本s
    Int getCaretPosition(int n)     //獲取文本區中游標的位置
    
按鈕
    Button()     //構造按鈕
    Button(String s)     //構造按鈕,標簽是s
    setLabel(String s) //設置按鈕標簽是s
    getLabel()     //獲取按鈕標簽
    addActionListener()     //添加監視器
    removeActionListener()     //移去監視器
    
標簽
  Label()     //構造標簽
  Label(String s)     //構造標簽,顯示s
  Label(String s,int x)    //x是對齊方式,取值:Label.LEFT;Label.RIGHT;Label.CENTER
  setText(String s)     //設置文本s
  getText()     //獲取文本
  setBackground(Color c)     //設置標簽背景顏色
  setForeground(Color c)     //設置字體顏色

選擇框
  Checkbox()     //構造選擇框
  Checkbox(String s)     //構造選擇框,給定標題s
  Checkbox(String s,boolean b)     //b設定初始狀態
  Checkbox(String s,boolean b,CheckboxGroup g)     //g設定了所屬的組(有了組就成為單選框)
  addItemListener()     //添加監視器
  removeItemListener()     //移去監視器
  getState()     //返回選擇框的是否選中狀態
  setState(boolean b)     //設置選擇框的狀態
  getLabel()     //獲取選擇框的標題
  setLabel(String s)     //設置選擇框的標題為s

選擇控制項
  Choice()     //構造選擇控制項
  add(String s)     //向選擇控制項增加一個選項
  addItemListener()     //添加監視器
  removeItemListener()     //移去監視器
  getSelectedIndex()     //返回當前選項的索引
  getSelectedItem()     //返回當前選項的字元串代表
  insert(String s,int n)     //在n處插入選項s
  remove(int n)
  removeAll()

滾動列表
  List()     //構造滾動列表
  List(int n)     //參數n是可見行數
  List(int n,boolean b)     //參數b是設置是否可以多項選擇
  add(String s)     //向列表的結尾增加一個選項
  add(String s,int n)     //在n處增加一個選項
  AddActionListener()     //滾動列表添加監視器
  addItemListener()     //滾動列表上的選項添加監視器
  remove(int n)     //刪除n初的選項
  remnoveAll()     //刪除全部選項
  getSelectedIndex()     //返回當前選項的索引
  getSelectedItem()     //返回當前選項的字元串代表

組件類的一些常用方法
  void setBackground(Color c)     //設置組件背景顏色
  void setForeground(Color c)     //設置組件前景顏色
  void setFonts(Font f)     //設置組件字體
  void setBounds(int x,int y,int w,int h)     //設置坐標,x,y表示在容器中坐標,w,h表示寬和高
  void setLocation(int x,int y)     //移動到x,y 處;void setSize(int w,int h) 設置寬和高
  void setVisible(boolean b)     //設置組建是否可見
  int getBounds().wigth     //獲取寬
  int getBounds().height     //獲取高
  int getBounds().x     //獲取x 坐標;

註意
1). 要固定JComboBox大小有兩個地方需要關註的。
    1、你的JComboBox放的面板的佈局是什麼類型的佈局,如果不是null佈局就調整佈局來給JComboBox分配合適的大小。
    2、如果你用的是空佈局的話,那麼用setSize方法 或者 setBounds方法,來改變JComboBox大小setBounds可以改變控制項的大小和位置。
2). Java中setBounds和setSize有什麼區別:bounds就是size和location的結合體

3、有些組件setSize不起作用時,用setPreferredSize,例如button.setPreferredSize(new Dimension(60, 22));

4、表格一般用模型創建,方便更新管理:

JTable table;
DefaultTableModel model = new DefaultTableModel(); //預設模型
model.setColumnIdentifiers(new Object[] {"a","b","c"}); //表頭
table = new JTable(model);
JScrollPane scrollPaner = new JScrollPane(table);
scrollPaner.setBounds(0, 0, 985, 500);
panel.add(scrollPaner);

表格數據的清除和更新:

//獲得表格的預設模型
DefaultTableModel model = (DefaultTableModel) table.getModel();
// 清空表格
while (model.getRowCount() > 0) {
     model.removeRow(model.getRowCount() - 1);
 }
//表格的數據插入
model.addRow(new Object[] { "a", "b", "c"});
//通知表格更新
model.fireTableDataChanged();

5、消息提示框

    //以下都是一個確定按鈕的彈出框
        JOptionPane.showMessageDialog(null, "提示內容");  //藍色反嘆號,標題為“消息”
        JOptionPane.showMessageDialog(null, "內容", "標題", JOptionPane.ERROR_MESSAGE); //錯誤提示,只要一個按鈕
        JOptionPane.showMessageDialog(null, "警告提示框", "標題",JOptionPane.WARNING_MESSAGE); 
        JOptionPane.showMessageDialog(null, "錯誤提示框", "標題",JOptionPane.ERROR_MESSAGE); 
        JOptionPane.showMessageDialog(null, "最基本提示框", "標題",JOptionPane.PLAIN_MESSAGE);//沒有圖標
        //以下帶有自定義選擇按鈕的選擇提示框,按鈕和提示消息均可自定義
        /*showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue);
         * 選擇對話框OptionDialog是一個充分由用戶自定義的對話框,showOptionDialog是一個8個參數的方法,參數“Object[] options”定義了一個按鈕數組集合,
         * 每個按鈕對應的返回值是其在數組中的下標,當參數“Object[] options”不空時,參數“int optionType”和“int messageType”作用不大,
         * 參數“Object initialValue”確定了預設選中的按鈕。*/
        JOptionPane.showConfirmDialog(null, "詢問提示框", "標題",JOptionPane.YES_NO_OPTION); //返回值為0或1
        Object[] options ={ "按鈕1", "按鈕2" };  //自定義按鈕
        JOptionPane.showOptionDialog(null, "詢問提示框", "標題",JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE, null, options, options[0]);  
        //showInoutDialog可以做成帶有下拉選擇列表或者輸入框的提示框,並可以將用戶選擇或者輸入信息返回
        Object[] obj2 ={ "a", "b", "c" };  //下拉內容
        String str = (String) JOptionPane.showInputDialog(null,"請選擇", "標題", JOptionPane.PLAIN_MESSAGE, new ImageIcon("圖標"), obj2, "b");
        JOptionPane.showInputDialog(null,"請輸入:\n","title",JOptionPane.PLAIN_MESSAGE); 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著微軟的開源,越來越多的項目支持跨平臺,但是各種支付平臺提供的類庫,又老又不支持跨平臺,吐槽下,尤其是微信,還有好多坑,於是ICanPay誕生了,今天就來講ICanPay是什麼,怎麼使用? ICanPay是一個支持多商戶多種支付方式的跨平臺網關處理類庫,使用ICanPay可以簡化訂單的創建、查詢、 ...
  • 支付回調: 獲取HttpRequest的body內容,之前使用Request.Form有時候數據請求不到(可能是跟.net core 版本有關?) 獲取到回調內容,接下來按照支付平臺來處理。 支付寶回調: 將返回的數據分割開來,decode後填裝到字典里後,獲取sign值等相關數據後,剔除sign及 ...
  • 在網站開發中,我們常常需要用到表單提交的方式,那麼在MVC中是如何獲取到表單中的數據呢?下麵我們來介紹以下幾種方式 首先我們先看看View前臺頁面 添加一個控制器 我們再看看前臺頁面的代碼 接下來我們進入正題,控制器如何去獲取表單代碼呢? 1.參數獲取,form表單中的name名稱要和action中 ...
  • 準備工作: 1.創建實體類:ClassInfo,預設想要對其按照班級學生數量進行排序 public class ClassInfo { /// <summary> /// 班級名稱 /// </summary> public string ClassName { get; set; } /// <s ...
  • 題目內容: 下圖為國內主要城市之間的公路里程: 你的程式要讀入這樣的一張表,然後,根據輸入的兩個城市的名稱,給出這兩個城市之間的里程。 註意:任何兩個城市之間的里程都已經給出,不需要計算經第三地中轉。 註意:你並不需要去錄入上圖的數據,數據是在程式輸入中給的。 輸入格式: 首先,你會讀到若幹個城市的 ...
  • 121,什麼是線程? 線程是操作系統能夠進行運算調度的最小單位,它被包含在進程之中,是進程中的實際運作單位。程式員可以通過它進行多處理器編程,你可以使用多線程對運算密集型任務提速。比如,如果一個線程完成一個任務要100毫秒,那麼用十個線程完成改任務只需10毫秒。 122,線程和進程有什麼區別? 線程 ...
  • 【直接上代碼】 #coding=utf-8#1、先將正則表達式的字元串形式編譯為Pattern實例 #2、使用Pattern實例處理文本並獲得匹配結果 #3、最後使用Match實例獲得消息,進行其他操作 import re # 【1】 re.compile(string[,flag]) 將正則表達式 ...
  • 《瘋狂java講義·第三版》,全書共851頁,18章。 目錄如下: 第1章 Java語言概述與開發環境 第2章 理解面向對象 第3章 數據類型和運算符 第4章 流程式控制制與數組 第5章 面向對象(上) 第6章 面向對象(下) 第7章 Java基礎類庫 第8章 Java集合 第9章 泛型 第10章 異常 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...