[英]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
。
另外,將MyClass
的getPreferredSize
方法重寫為適當的值(您的繪圖區域的大小),然后忘記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.