Java Swing Drawing Rectangles



我试图在整数数组中可视化值。它们应该像条形图一样,但只是条形图,没有轴等等我使用Java Swing作为GUI。现在应该只画一个矩形,但无论我把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);
}

我很想发布一个输出的图片,但是SO不希望我…

使用BorderLayout而不是FlowLayout。不要在同一个BorderLayout区域中添加两个组件。把MyClass实例放到BorderLayout.CENTER中。

也覆盖MyClassgetPreferredSize方法到一个合适的值(你的绘图区域的大小),忘记setSize;使用pack来包装你的框架,然后使它可见。

最后,当使用swing时,不要覆盖paint,而是paintComponent

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

不要使用setSize()

自定义绘画是通过重写类的paintComponent()方法来完成的,不要忘记调用super.paintComponent(...)。您还可以重写getPreferredSize()方法以返回自定义绘画的尺寸。

现在你的组件将有一个首选的大小和布局管理器可以做它的工作。

阅读Swing教程中关于自定义绘画的部分,了解更多信息和工作示例。

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

JPanel默认使用FlowLayout。指定一个BorderLayout约束没有任何作用。你甚至不需要这个面板,所以去掉它,只添加矩形面板到框架。

相关内容

  • 没有找到相关文章

最新更新