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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...