Java Swing绘图矩形
我试图在整数数组中可视化值。 它们应该像一个条形图,但只是没有轴的条形图 我正在为GUI使用JavaSwing。 现在应该只画一个矩形,但是无论我在Java Swing绘图矩形,java,swing,user-interface,jframe,jpanel,Java,Swing,User Interface,Jframe,Jpanel,我试图在整数数组中可视化值。 它们应该像一个条形图,但只是没有轴的条形图 我正在为GUI使用JavaSwing。 现在应该只画一个矩形,但是无论我在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(
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);
}
我很想发布输出的图片,但不想让我
mypanel.setSize(new Dimension(256,256));
不要使用setSize()
自定义绘制是通过重写类的paintComponent()
方法完成的,不要忘记调用super.paintComponent(…)
。您还可以重写getPreferredSize()
方法以返回自定义绘制的维度
现在,您的组件将具有首选大小,布局管理器可以完成其工作
有关更多信息和工作示例,请阅读上Swing教程的部分
mypanel.add(new MyClass(),BorderLayout.SOUTH);
默认情况下,JPanel使用FlowLayout。指定BorderLayout约束不起任何作用。你甚至不需要这个面板,所以摆脱它,只需将矩形面板添加到框架中即可
不要使用setSize()
自定义绘制是通过重写类的paintComponent()
方法完成的,不要忘记调用super.paintComponent(…)
。您还可以重写getPreferredSize()
方法以返回自定义绘制的维度
现在,您的组件将具有首选大小,布局管理器可以完成其工作
有关更多信息和工作示例,请阅读上Swing教程的部分
mypanel.add(new MyClass(),BorderLayout.SOUTH);
默认情况下,JPanel使用FlowLayout。指定BorderLayout约束不起任何作用。你甚至不需要这个面板,所以去掉它,只需将矩形面板添加到框架中。使用边框布局
而不是流程布局
。不要在同一BorderLayout
区域中添加两个组件。将您的MyClass
实例放在BorderLayout.CENTER
中
还将MyClass
的getPreferredSize
方法重写为适当的值(绘图区域的大小),并忘记setSize
;使用pack
在使框架可见之前对其进行打包
最后,使用swing时不要覆盖绘制
,而是绘制组件
使用边框布局
而不是流程布局
。不要在同一BorderLayout
区域中添加两个组件。将MyClass
实例放入BorderLayout.CENTER
还将MyClass
的getPreferredSize
方法重写为适当的值(绘图区域的大小),并忘记setSize
;使用pack
在使框架可见之前对其进行打包
最后,在使用swing时不要覆盖paint
,但paintComponent
我很想发布输出的图片,但不想让我…
-每次您提出问题时都发布一个适当的说明问题。如果我们愿意,我们可以复制/编译/执行代码以查看问题。我很想发布输出的图片,但不想让我…
-每次您提出问题时,都发布一个适当的说明问题的帖子。如果我们愿意,我们可以复制/编译/执行代码来查看问题。非常感谢,如果我想把矩形放在左下角,BorderLayout。South不会做任何事情。有没有办法在其他地方设置0,0点,而不是左上角?没关系,我找到了一种方法,通过玩x坐标和高度。谢谢是的,您可以通过将适当的仿射变换设置为图形2d
来修改坐标系。非常感谢,如果我想将矩形放在左下角,BorderLayout。South不会做任何事情。有没有办法在其他地方设置0,0点,而不是左上角?没关系,我找到了一种方法,通过玩x坐标和高度。谢谢是的,您可以通过将适当的仿射变换设置为图形2d
来修改坐标系。