java - 如何使图形对象在调整大小时保持静态?

标签 java swing layout awt

下面我附上了代码,它在窗口的中心绘制了一条简单的垂直线,但是当我调整窗口大小时,该线会向调整大小的方向倾斜。

但是当尝试使用两条线时,第一条线倾斜,而第二条线保持固定。

我希望无论给定的大小如何,它们都能被修复。

public class finalPlot{

    static JFrame f = new JFrame();

    public static void main(final String[] args){
        f.setTitle("Plot");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // f.setSize(500,500);
        f.setResizable(true);
        f.setVisible(true);
        f.addWindowListener(new WindowAdapter(){

            @Override
            public void windowClosing(final WindowEvent e){
                System.exit(0);
            }
        });
        f.add(new PlotArray(), BorderLayout.CENTER);
        f.pack();
        f.show();
    }
}




class PlotArray extends Canvas{

    public Dimension getPreferredSize(){
        return new Dimension(500, 500);
    }

    public void paint(final Graphics g){

        final Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);

        final Dimension size = getSize();
        final Line2D lin =
            new Line2D.Float((float) size.width / 2, 90, 250, 250);
        final Line2D lin2 = new Line2D.Float(45, 300, 250, 150);
        g2.setPaint(Color.blue);
        g2.draw(lin);
        g2.draw(lin2);

    }

}

谢谢

最佳答案

那么不要使用 size.width/2 因为它是 Canvas 组件的宽度。请改用静态号码。

关于java - 如何使图形对象在调整大小时保持静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5270994/

相关文章:

java - 使用 RestTemplate 上传 CommonsMultipartFile 的文件失败

java - 使用 IntSummaryStatistics 跨多个字段取平均值

java - 连接到 MySQL 服务器 JDBC

java - 如何在 Y 轴上创建一个随机大小的按钮

Java Swing 自定义游标不可见

java - 如何用数组数据填充直方图?

java面板布局 jetty

java - 如何配置项目以使用最新的 Derby DB 版本 (10.4)?

html - 如何控制边框高度?

java - Android: Import DrawerLayout 无法解析