我正在尝试可视化整数数组中的值。
它们应该像条形图,但只是条形图没有轴等
我使用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);
}
我很想发布一张输出图片,但是我不希望我......
答案 0 :(得分:3)
使用BorderLayout
而不是FlowLayout
。不要在同一BorderLayout
区域中添加两个组件。将您的MyClass
个实例放入BorderLayout.CENTER
。
同时将getPreferredSize
MyClass
方法覆盖为适当的值(绘图区域的大小),并忘记setSize
;使用pack
打包您的框架,然后再将其显示出来。
最后,在使用swing paint
时不要覆盖paintComponent
。
答案 1 :(得分:2)
mypanel.setSize(new Dimension(256,256));
不要使用setSize()。
自定义绘画是通过覆盖班级的paintComponent()
方法完成的,不要忘记调用super.paintComponent(...)
。您还可以覆盖getPreferredSize()
方法以返回自定义绘画的尺寸。
现在,您的组件将具有首选大小,布局管理器可以完成其工作。
阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。
mypanel.add(new MyClass(),BorderLayout.SOUTH);
默认情况下,JPanel使用FlowLayout。指定BorderLayout约束不执行任何操作。你甚至不需要这个面板,所以摆脱它,只需将矩形面板添加到框架中。