Java Swing 绘制矩形

标签 java swing user-interface jframe jpanel

我正在尝试可视化整数数组中的值。 它们应该像条形图,但只是条形图,没有轴等 我使用 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

关于Java Swing 绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740510/

相关文章:

java - 将布局管理器添加到 JPanel 和 JFrame

qt - 如何动态隐藏/显示小部件?

java - Spring Data 有条件地获取 child

java - 具有多个 key (不同密码)的 JKS

java - 带有 paint 方法的 JMenuBar

java - 这种 Swing 行为是错误吗?神秘的 BoxLayout 对齐方式

javascript - SonarQube 5.1.2 版本用户界面设计

python-3.x - 使用鼠标在 python tkinter Canvas 上绘制并获取指向列表的点?

Java多线程问题——消费者/生产者模式

java - 将实时 Android 音频流式传输到服务器