日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java panel 左对齐,将Shape的中心与JPanel的中心对齐 - java

發布時間:2025/4/17 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java panel 左对齐,将Shape的中心与JPanel的中心对齐 - java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我一直在嘗試將java2d形狀的中心與JPanel的中心對齊,但沒有成功。我能夠使用getBounds方法對圖像和許多2D形狀(如平行四邊形)執行此操作,但對于菱形卻無法做到,盡管它們都遵循相同的模式。徹底地,當我從實際項目中準備SSCCE時,我無法正確對齊它們。

我已經編寫了一個drawShape方法來在中心上繪制形狀。我不明白我要去哪里錯了。

這是SSCCE:

import java.awt.*;

import java.awt.geom.*;

import java.util.*;

import javax.swing.*;

public class TestPanel extends JPanel{

Point a,b,c,d;

Shape trapezium,parallelogram;

Random random=new Random();

public TestPanel(){

a=new Point();

b=new Point();

c=new Point();

d=new Point();

rhombusFactory(a,b,c,d);

trapezium=getQuadrilateral(a,b,c,d);

}

private void rhombusFactory(Point a,Point b,Point c,Point d)

{ int width=random.nextInt(200-100)+100;

int height=random.nextInt(150-50)+50;

a.x=0;

a.y=0;

b.x=a.x+width/2;

b.y=a.y+height/2;

c.x=a.x+width;

c.y=a.y;

d.x=a.x+width/2;

d.y=a.y-height/2;

}

private void parallelogramFactory(Point a,Point b,Point c,Point d){

int l1=random.nextInt(200-100)+100;

int l2=random.nextInt(150-70)+70;

int offset=(random.nextInt(2)==0?-1:1)*(random.nextInt(50-20)+20);

a.x=0;

a.y=0;

b.x=a.x+l1;

b.y=a.y;

d.x=a.x+offset;

d.y=a.y+l2;

c.x=d.x+l1;

c.y=d.y;

}

private Shape getQuadrilateral(Point a,Point b,Point c,Point d){

GeneralPath gp=new GeneralPath();

gp.moveTo(a.x,a.y);

gp.lineTo(b.x,b.y);

gp.lineTo(c.x,c.y);

gp.lineTo(d.x,d.y);

gp.closePath();

return gp;

}

private void drawShape(Graphics2D g,Shape shape){

AffineTransform oldt=g.getTransform();

Rectangle2D bounds=shape.getBounds2D();

double height=bounds.getHeight();

double width=bounds.getWidth();

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

g.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));

g.translate(this.getWidth()/2,this.getHeight()/2);

g.translate(-width/2,-height/2);

g.draw(shape.getBounds2D());

g.draw(shape);

g.setTransform(oldt);

}

public void paintComponent(Graphics g2){

super.paintComponent(g2);

Graphics2D g=(Graphics2D)g2;

drawShape(g,trapezium);

//drawShape(g,parallelogram);

}

public static void main(String args[]){

JFrame jf=new JFrame();

TestPanel tp=new TestPanel();

jf.setLayout(new BorderLayout());

jf.add(tp,BorderLayout.CENTER);

jf.setSize(500,500);

jf.setVisible(true);

}

}

任何幫助,將不勝感激

編輯:

我只是從代碼中刪除了混亂的行...

參考方案

您需要考慮Shape的有界x / y位置:

Rectangle bounds=shape.getBounds(); // changed this

...

//g.translate(this.getWidth()/2,this.getHeight()/2);

//g.translate(-width/2,-height/2);

g.translate((this.getWidth() - width) / 2,(this.getHeight() - height) / 2);

g.translate(-bounds.x, -bounds.y); // added this

Java Swing SearchBox模型 - java

我需要使用Java Swing的搜索框,如果單擊任何建議,當輸入字母時它將顯示來自數據庫的建議,它將執行一些操作。如果有可能在Java swing中,請提供源代碼提前致謝 java大神給出的解決方案 您可以使用DefaultComboBoxModel,輸出將是這樣。Try this在此代碼中,您將找到countries數組,因此您需要從數據庫中獲取此數組。Java swing-事件觸發后,我可以在選項卡上更改名稱嗎? - java

一,代碼:tab_textArea_file.addTab(docLabel, null, scrollPane_textArea, null); 因此,情況是我有一個可供用戶選擇的文件列表。用戶單擊文件時,將讀取文件的內容并將其加載到textArea中。 “ docLabel”(在上面的代碼中)是應該更改為所選文件名的字符串,但并非如此。是否可以通過上面的…Swing-典型桌面應用程序中的并發 - java

這可能是一個廣泛的問題,但我想知道單用戶桌面應用程序通常在何處使用并發。您如何發現理想情況下(在設計階段)并發問題?附注:從操作系統理論上來說,并發問題通常發生在無法共享資源(例如打印機)的情況下。不過,我仍然對在編程級別上可能發生的情況感到迷惑。 java大神給出的解決方案 Event Dispatch thread與其他邏輯之間的Swing中可能存在線程…Java:線程池如何將線程映射到可運行對象 - java

試圖繞過Java并發問題,并且很難理解線程池,線程以及它們正在執行的可運行“任務”之間的關系。如果我創建一個有10個線程的線程池,那么我是否必須將相同的任務傳遞給池中的每個線程,或者池化的線程實際上只是與任務無關的“工人無人機”可用于執行任何任務?無論哪種方式,Executor / ExecutorService如何將正確的任務分配給正確的線程? 參考方案 …JAVA:字節碼和二進制有什么區別? - java

java字節代碼(已編譯的語言,也稱為目標代碼)與機器代碼(當前計算機的本機代碼)之間有什么區別?我讀過一些書,他們將字節碼稱為二進制指令,但我不知道為什么。 參考方案 字節碼是獨立于平臺的,在Windows中運行的編譯器編譯的字節碼仍將在linux / unix / mac中運行。機器代碼是特定于平臺的,如果在Windows x86中編譯,則它將僅在Win…

總結

以上是生活随笔為你收集整理的java panel 左对齐,将Shape的中心与JPanel的中心对齐 - java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。