Как сделать графические объекты статичными при изменении размера? - PullRequest
1 голос
/ 11 марта 2011

Ниже я прикрепил код, который рисует простую вертикальную линию в центре окна, но когда я изменяю размер окна, линия наклоняется в направлении изменения размера.

Но при попытке с двумя строками 1-я строка наклоняется, а вторая остается фиксированной.

Я хочу, чтобы они были исправлены независимо от заданного размера.

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);

    }

}

Спасибо

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Тогда не используйте size.width / 2, потому что это видимость вашего компонента Canvas. Вместо этого используйте статический номер.

0 голосов
/ 11 марта 2011

PlotArray.paint вызывается каждый раз, когда размер окна изменяется, и каждый раз, когда это происходит, lin рисуется с другим значением x, потому что PlotArray имеет другую ширину.Чтобы сохранить его постоянным, вы можете сохранить его ширину в переменной экземпляра при первом вызове paint.

...