用線程一個(gè)一個(gè)地寫上去

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),稷山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:稷山等地區(qū)。稷山做網(wǎng)站價(jià)格咨詢:13518219792
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class TestFrame extends JFrame {
private JLabel jl;
public TestFrame() {
setName("一個(gè)一個(gè)字地顯示");
setBounds(200,200,300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jl = new JLabel();
jl.setHorizontalTextPosition((int) TOP_ALIGNMENT);
jl.setBackground(Color.red);
jl.setSize(300, 300);
jl.setVerticalAlignment(SwingConstants.TOP);
add(jl);
setVisible(true);
}
private void setLabelText(String str){
jl.setText(str);
}
private class WriterWord implements Runnable{
private String words;
public WriterWord(String words) {
this.words = words;
}
@Override
public void run() {
try {
for (int i = 0; i words.length(); i++) {
setLabelText(words.substring(0,i));
Thread.sleep(1000);//隔一秒設(shè)置label文本
}
} catch (Exception e) {
}
}
}
public static void main(String[] args) {
TestFrame tf = new TestFrame();
WriterWord ww = tf.new WriterWord("一個(gè)一個(gè)地打字");
Thread t = new Thread(ww);
t.start();//運(yùn)行線程
}
}
只提指導(dǎo),沒有源碼。
在 Java 中要自定義組件,一般是覆蓋掉 protected void paintComponent(Graphics g); 方法就可以了,對于你這個(gè)類似畫筆的程序,首先,整個(gè)畫布是一個(gè)自定義的繼承自像 JPanel 一樣的東西,不過我們需要覆蓋它的 paintComponent 方法,因?yàn)椋阂弧⑽覀冃枰诋?dāng)鼠標(biāo)拖放一個(gè)東西時(shí)我們移動這個(gè)選中的圖形時(shí)記住它的位置;二、設(shè)定 label 時(shí)需要保存它的 Label。三、知道圖形的形狀。
,然后在 paintComponent 時(shí)依次畫出各個(gè)圖形來。
要繪圖:
1、直線,g.drawLine(x,y,x2,y2); // 參數(shù)分別是起止點(diǎn)坐標(biāo)。
2、矩形,g.fillRect(x, y, w, h); // 參數(shù)分別是左上角坐標(biāo)和寬及高。
3、橢圓,g.fillOval(x, y, w, h); // 參數(shù)分別是橢圓形的外切矩形的左上角坐標(biāo)及寬和高,當(dāng)w 和 h 相等時(shí)是個(gè)圓。
準(zhǔn)備繪圖前 g.setColor() 設(shè)置前景色;先把整個(gè)畫布用 g.fillRect() 涂成白色,再分別畫各個(gè)圖形,最后繪制 Label 應(yīng)該在畫圖形之后再做。
移動圖形,是給 畫布組件 addMouseMotionListener 來監(jiān)聽事件的,在拖動時(shí)先通過 mouseDragged 事件的 MouseEvent.point 知道它的位置是在哪個(gè)圖形的內(nèi)部,之后的移動就修改這個(gè)圖形的位置。
// 讀取模板圖片內(nèi)容
BufferedImage image = ImageIO.read(new FileInputStream("c:\\test.jpg"));
Graphics2D g = image.createGraphics();// 得到圖形上下文
g.setColor(Color.BLACK); // 設(shè)置畫筆顏色
// 設(shè)置字體
g.setFont(new Font("宋體", Font.LAYOUT_LEFT_TO_RIGHT, 15));// 寫入簽名
// 下面這一句中的43,image.getHeight()-10可以改成你要的坐標(biāo)。
g.drawString("這是新加入的文字", 43, image.getHeight() - 10);
g.dispose();
FileOutputStream out = new FileOutputStream("c:\\test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
希望我的回答能幫助你 謝謝 呵呵 答案補(bǔ)充 肯定了 在一張紙上寫字 肯定會自動換行的 否則寫外面?邏輯都通不過去~ 答案補(bǔ)充 把你的意思說出了 是不是隨便的寫字然后就提交 就把字寫在了圖片上還是?多少字 有沒有約束? 答案補(bǔ)充 g.drawString("這是新加入的文字", 43, image.getHeight() - 10);
在這個(gè)做處理 你規(guī)定了字體的大小 那么獲取字符的長度*大小 一次判斷不要大于寬度 否則image.getHeight() - 10++ 你試試 應(yīng)該可以的 我這里沒有Eclipse 答案補(bǔ)充 public class mains {
/**
* @param args
*/
private static int fontsize = 15;
static String jj(String str)
{
String sContent = str;
sContent=sContent.replaceAll(" "," ");
sContent=sContent.replaceAll("br/","/");
sContent=sContent.replaceAll("br","/");
return sContent;
} 答案補(bǔ)充 static void hh(String str)
{
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream("E:\\dian zi za zhi/789.jpg"));
Graphics2D g = image.createGraphics();// 得到圖形上下文
g.setColor(Color.BLACK); // 設(shè)置畫筆顏色
// 設(shè)置字體
g.setFont(new Font("宋體", Font.LAYOUT_LEFT_TO_RIGHT, fontsize));// 寫入簽名
// 下面這一句中的43,image.getHeight()-10可以改成你要的坐標(biāo)。
String text = jj(str); 答案補(bǔ)充 String [] text1 = text.split("/");
int h = image.getHeight();
int w = image.getWidth();
for(int i=0;itext1.length;i++)
{
g.drawString(text1[i],0,fontsize+i*fontsize);
}
g.dispose();
FileOutputStream out = new FileOutputStream("E:\\dian zi za zhi/789.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close(); 答案補(bǔ)充 public static void main(String[] args) {
// TODO Auto-generated method stub
hh("sdakljsdhwwbr/asdasdbr/a");
}
}
試試 可以換行 答案補(bǔ)充 關(guān)于 圖片的尺寸以及字體是否超出 你自己試著解決下 不要過于依賴問
在JTextField添加鍵盤事件,判斷按鍵是否是Enter鍵,如果是,就將JTextField的值取出來,顯示在畫布里
當(dāng)前標(biāo)題:畫布上寫字java代碼,畫布上寫字java代碼是什么
瀏覽路徑:http://chinadenli.net/article39/dseshsh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、虛擬主機(jī)、外貿(mào)建站、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)