1. 程式人生 > >java中利用JFrame建立窗體

java中利用JFrame建立窗體

 在程式碼中執行完textArea.append("message")後,如果你想讓這個更新立刻顯示在介面上而不是等swing的主執行緒返回後重新整理,我們一般會在該語句後呼叫textArea.invalidate()和textArea.repaint()。

問題是這個方法並不能有任何效果,textArea的內容沒有任何變化,這或許是swing的一個bug,有一個笨拙的辦法可以實現這個效果,就是執行以下語句

  textArea.paintImmediately(textArea.getBounds());


  textArea.paintImmediately(textArea.getX(), textArea.getY(), textArea.getWidth(), textArea.getHeight());

這時,你會發現你剛才增加的訊息已經被實時地顯示出來了。

5. 畫圖並新增滑鼠事件

Java程式碼  收藏程式碼
  1. final Image img = Toolkit.getDefaultToolkit().getImage(  
  2.                 Test.class.getResource("map.png"));  
  3.         JTextArea ta = new JTextArea() {  
  4.             {  
  5.                 setOpaque(false);// 設定不透明的引數,缺少時背景圖片不顯示  
  6.             }  
  7.             public void paint(Graphics g) {  
  8.                 g.drawImage(img, 00this);  
  9.                 super.paint(g);  
  10.             }  
  11.         };  
  12.         MouseListener ml = new MouseListener() {  
  13.             public void mouseClicked(MouseEvent e) {  
  14.                 if (e.getClickCount() == 2
    ) {  
  15.                     System.out.println("Mouse double clicked");  
  16.                                   }  
  17.                         }  
  18.                       public void mouseEntered(MouseEvent e) {  
  19.                 // TODO Auto-generated method stub  
  20.             }  
  21.             public void mouseExited(MouseEvent e) {  
  22.                 // TODO Auto-generated method stub  
  23.             }  
  24.             public void mousePressed(MouseEvent e) {  
  25.                 // TODO Auto-generated method stub  
  26.             }  
  27.             public void mouseReleased(MouseEvent e) {  
  28.                 // TODO Auto-generated method stub  
  29.             }  
  30.                };  
  31.                ta.addMouseListener(ml);  
  32.         ta.setBounds(00300200);  
  33.         ta.setEditable(false);  
 

6.另一個例子:在一個TextArea裡寫內容,其他兩個同時顯示

Java程式碼  收藏程式碼
  1. /*JTextArea是多行文字編輯器,JTextField是一個簡單的單行文字編輯器,它們都由JTextComponent類派生,所以它們包含一些共同的方法,如設定和獲取所顯示的文字,指定文字是否可編輯,或者是否只讀,管理文字內的游標位置以及管理文字選擇等。 
  2. 文字元件的模型是一個稱為Document的物件,對於一個JTextArea或JTextField,要為之增加或刪除文字,就會改變相應的Document。當出現某種改動時,要由文件本身(而不是可視的元件)來生成與文字相關的事件。因此,為了接收JTextArea修改的通知,就要向底層Document註冊,而不是向JTextArea元件本身註冊: 
  3. */  
  4. JTextArea textArea = new JTextArea();  
  5. Document d = textArea.getDocument();  
  6. d.addDocumentListener(someListener);  
  7. /* 
  8. 一個例子如下,在任意的一個文字區中鍵入的內容,在三個區中都將得以體現。我們要做的就是讓所有的文字區都共享一個數據模型。 
  9. */  
  10. import java.awt.Container;  
  11. import java.awt.GridLayout;  
  12. import javax.swing.JFrame;  
  13. import javax.swing.JScrollPane;  
  14. import javax.swing.JTextArea;  
  15. public class ShareModel {  
  16.     public static void main(String[] args) {  
  17.         JFrame frame = new JFrame("ShareModel");  
  18.         JTextArea areaFiftyOne = new JTextArea();  
  19.         JTextArea areaFiftyTwo = new JTextArea();  
  20.         areaFiftyTwo.setDocument(areaFiftyOne.getDocument());  
  21.         JTextArea areaFiftyThree = new JTextArea();  
  22.         areaFiftyThree.setDocument(areaFiftyOne.getDocument());  
  23.         Container content = frame.getContentPane();  
  24.         content.setLayout(new GridLayout(3,1));  
  25.         content.add(new JScrollPane(areaFiftyOne));  
  26.         content.add(new JScrollPane(areaFiftyTwo));  
  27.         content.add(new JScrollPane(areaFiftyThree));  
  28.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  29.         frame.setSize(300,300);  
  30.         frame.setVisible(true);  
  31.     }  
  32. }  
  33. /* 
  34. 在一個文字區中鍵入時,此文字區將接受鍵盤事件,它會呼叫文件中的方法來更新資料,相應的,文件會向其它文字區傳送事件,通知出現了更新,從而使它們能夠正確的顯示文件的新資料。不過,所有這一切都無需我們關心。要做的只是通知文字區使用同一資料。Swing會接管其餘的一切。 
  35. 另外需要注意的,JTextArea沒有滾動功能,超出文字區域的內容無法顯示出來,通過滑鼠拖動也無法看到。但它實現了Swing Scrollable介面。必須把它放置在JScrollPane的內部才能實現滾動。 
  36. */  
 

相關推薦

java利用JFrame建立窗體

 在程式碼中執行完textArea.append("message")後,如果你想讓這個更新立刻顯示在介面上而不是等swing的主執行緒返回後重新整理,我們一般會在該語句後呼叫textArea.invalidate()和textArea.repaint()。 問題是這個方法並不能有任何效果,textAr

Java利用Math.random()產生服從泊松分布的隨機數

感謝 java 分布 and 隨機數 離散 ability oss for 眾所周知。Java的Math.random()產生的是服從均勻分布的隨機數,可是其它分布的應用也相當廣泛,比如泊松分布和高斯分布(正態分布)。而這些分布Java沒有非常好的提供(高斯分布能夠

Java利用IO流的輸入流讀取文件實現登錄功能

use 判斷 body 當前 ole pwd files pre users 1 package object.io; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundEx

JAVA利用public static final的組合方式對常量進行標識

pan tex 方法 進行 系統設置 ext lean boolean lse 在JAVA中利用public static final的組合方式對常量進行標識(固定格式)。 對於在構造方法中利用final進行賦值的時候,此時在構造之前系統設置的默認值相對於構造方法失效。

JavaJFrame插入圖片的程式碼

資料夾“影象”是與“src”同級的目錄檔案  package com.main; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Exa

java使用selenium建立瀏覽器驅動

WebDriver driver = new ChromeDriver(); //Chrome瀏覽器 WebDriver driver = new FirefoxDriver(); //Firefox瀏覽器 WebDriver driver = new EdgeDriver(); //Edg

Java利用集合框架模擬鬥地主程式例項

package doudizhuDemo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; /* 模擬鬥地主 *

JavaString物件建立

文章目錄 1 String a="abc"與String b=new String("abc")一樣嗎,難道也是語法糖??? 2 String a="abc"要建立幾個物件?? 3 String a="abc";String b=new Str

java利用陣列和單列集合模擬"鬥地主"買牌 洗牌 發牌 理牌 展示 的過程

原始碼: import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; public class PokerDemo1 { public static void main(

java物件的建立(clone)

[java] view plain copy print?staticclass Body implements Cloneable{      public Head head;      public Body() {}      public Body(Head head) {this.head = h

Java執行緒建立的方式:繼承thread類與實現Runnable介面

Java中執行緒的建立有兩種方式: 1.  通過繼承Thread類,重寫Thread的run()方法,將執行緒執行的邏輯放在其中 2.  通過實現Runnable介面,例項化Thread類     在實際應用中,我們經常用到多執行緒,如車站的售票系統,車站的

Java利用QueryRunner批量更新資料

程式碼如下: package com.accord.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.text.SimpleDateFormat; impo

Java5種建立物件的方法,你知道幾種?

作為一個Java開發者,一種面向物件的語言,我們每天都建立很多物件。但後續我們開發中,採用了spring的依賴管理系統,我們就很少自己去建立物件了,全部交給容器去託管,那麼本篇文章回源塑本,講述一下java中能夠建立一個物件的5中方法。 本文最大的特色是,我不僅給出案例,

java利用TCP/IP協議演示聊天室

客戶端部分:客戶端部分對讀寫進行分離,避免讀寫(接發訊息互相干擾,進行讀操作時阻塞不能進行寫操作,寫時不能進行讀操作) 1、客戶端的執行主執行緒ClientTest package com.work.socketTest.testmain; import java.io.

java利用stream求list集合某個欄位的和

直接開始秀: 如果你的list是這種的: List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); 那麼就這麼求: IntSummaryStatistics stats = number

Java的mkdirs()建立目錄操作

回顧Java第二週,參考網址: 在其中“Java中的目錄”這一欄裡的程式碼,在動手測試中發現執行不通過,原始碼: import java.io.File; public class CreateDir { public static void main(S

Java利用MultipartFile實現檔案上傳

JavaWeb專案頁面實現檔案上傳功能 jsp檔案增加檔案上傳控制元件,可以放在form表單內,增加隱藏域儲存上傳路徑提交到後臺。 <div class="form-group"> <div class="col-sm-7 center "&g

JAVA利用反射,往集合插入其他型別的資料

  @Test public void TestReflectList() { List<String> list=new ArrayList<>(); list.add("A"); list.add(

Java利用Math.random()產生服從泊松分佈的隨機數

眾所周知,Java的Math.random()產生的是服從均勻分佈的隨機數,但是其他分佈的應用也相當廣泛,例如泊松分佈和高斯分佈(正態分佈),而這些分佈Java沒有很好的提供(高斯分佈可以利用Rand

java利用jsch執行遠端命令,實現sftp

利用jsch可以執行遠端命令並實現sftp檔案傳輸,以下為自定義的util: import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; impor