簡體   English   中英

Java Swing工程圖矩形

[英]Java Swing Drawing Rectangles

我正在嘗試可視化整數數組中的值。 它們應該像條形圖,但是只是條形圖沒有軸,例如Im使用Java Swing作為GUI。 現在應該只繪制一個矩形,但是無論我將g.fillRect(0,0,width,height)的高度增加多少g.fillRect(0,0,width,height)其繪制為正方形。

這是我的代碼:

public class MyClass extends JPanel
{
...

public void paint(Graphics g)
{
    g.fillRect(0,0,10,100);
}

public void draw()
{
    JFrame myframe = new JFrame("FrameTest");
    myframe.setSize(new Dimension (groesse,groesse));
    myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    JPanel mypanel = new JPanel();
    mypanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    mypanel.setSize(new Dimension(256,256));

    mypanel.add(new MyClass(),BorderLayout.SOUTH);

    myframe.add(mypanel,BorderLayout.SOUTH);

    myframe.setVisible(true);
}

我很想發布輸出圖片,但是我不希望我...

使用BorderLayout而不是FlowLayout 不要在同一BorderLayout區域中添加兩個組件。 將您的MyClass實例放入BorderLayout.CENTER

另外,將MyClassgetPreferredSize方法重寫為適當的值(您的繪圖區域的大小),然后忘記setSize 使用pack打包框架,然后使其可見。

最后,在使用swing時不要覆蓋paint ,而要覆蓋paintComponent

mypanel.setSize(new Dimension(256,256));

不要使用setSize()。

通過覆蓋類的paintComponent()方法來完成自定義繪制,不要忘記調用super.paintComponent(...) 您還將重寫getPreferredSize()方法以返回自定義繪畫的Dimension。

現在,您的組件將具有首選的大小,並且布局管理器可以執行其工作。

閱讀有關定制繪畫的Swing教程中的部分,以獲取更多信息和工作示例。

mypanel.add(new MyClass(),BorderLayout.SOUTH);

JPanel默認使用FlowLayout。 指定BorderLayout約束不會執行任何操作。 您甚至不需要此面板,因此您可以擺脫它,只需將矩形面板添加到框架中即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM