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程式碼- final Image img = Toolkit.getDefaultToolkit().getImage(
- Test.class.getResource("map.png"));
- JTextArea ta = new JTextArea() {
- {
- setOpaque(false);// 設定不透明的引數,缺少時背景圖片不顯示
-
}
- public void paint(Graphics g) {
- g.drawImage(img, 0, 0, this);
- super.paint(g);
- }
- };
- MouseListener ml = new MouseListener() {
- public void mouseClicked(MouseEvent e) {
-
if (e.getClickCount() == 2
- System.out.println("Mouse double clicked");
- }
- }
- public void mouseEntered(MouseEvent e) {
- // TODO Auto-generated method stub
- }
- public void mouseExited(MouseEvent e) {
- // TODO Auto-generated method stub
- }
- public void mousePressed(MouseEvent e) {
- // TODO Auto-generated method stub
- }
- public void mouseReleased(MouseEvent e) {
- // TODO Auto-generated method stub
- }
- };
- ta.addMouseListener(ml);
- ta.setBounds(0, 0, 300, 200);
- ta.setEditable(false);
6.另一個例子:在一個TextArea裡寫內容,其他兩個同時顯示
Java程式碼- /*JTextArea是多行文字編輯器,JTextField是一個簡單的單行文字編輯器,它們都由JTextComponent類派生,所以它們包含一些共同的方法,如設定和獲取所顯示的文字,指定文字是否可編輯,或者是否只讀,管理文字內的游標位置以及管理文字選擇等。
- 文字元件的模型是一個稱為Document的物件,對於一個JTextArea或JTextField,要為之增加或刪除文字,就會改變相應的Document。當出現某種改動時,要由文件本身(而不是可視的元件)來生成與文字相關的事件。因此,為了接收JTextArea修改的通知,就要向底層Document註冊,而不是向JTextArea元件本身註冊:
- */
- JTextArea textArea = new JTextArea();
- Document d = textArea.getDocument();
- d.addDocumentListener(someListener);
- /*
- 一個例子如下,在任意的一個文字區中鍵入的內容,在三個區中都將得以體現。我們要做的就是讓所有的文字區都共享一個數據模型。
- */
- import java.awt.Container;
- import java.awt.GridLayout;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- public class ShareModel {
- public static void main(String[] args) {
- JFrame frame = new JFrame("ShareModel");
- JTextArea areaFiftyOne = new JTextArea();
- JTextArea areaFiftyTwo = new JTextArea();
- areaFiftyTwo.setDocument(areaFiftyOne.getDocument());
- JTextArea areaFiftyThree = new JTextArea();
- areaFiftyThree.setDocument(areaFiftyOne.getDocument());
- Container content = frame.getContentPane();
- content.setLayout(new GridLayout(3,1));
- content.add(new JScrollPane(areaFiftyOne));
- content.add(new JScrollPane(areaFiftyTwo));
- content.add(new JScrollPane(areaFiftyThree));
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(300,300);
- frame.setVisible(true);
- }
- }
- /*
- 在一個文字區中鍵入時,此文字區將接受鍵盤事件,它會呼叫文件中的方法來更新資料,相應的,文件會向其它文字區傳送事件,通知出現了更新,從而使它們能夠正確的顯示文件的新資料。不過,所有這一切都無需我們關心。要做的只是通知文字區使用同一資料。Swing會接管其餘的一切。
- 另外需要注意的,JTextArea沒有滾動功能,超出文字區域的內容無法顯示出來,通過滑鼠拖動也無法看到。但它實現了Swing Scrollable介面。必須把它放置在JScrollPane的內部才能實現滾動。
- */
相關推薦
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進行賦值的時候,此時在構造之前系統設置的默認值相對於構造方法失效。
Java中向JFrame中插入圖片的程式碼
資料夾“影象”是與“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; /* 模擬鬥地主 *
Java中String物件建立
文章目錄 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
Java中5種建立物件的方法,你知道幾種?
作為一個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