2016-07-19 2 views
0

Я пытаюсь создать прямоугольник в центре jframe. Я пробовал с помощью вставки, но мне не повезло. Я сделал следующий класс для прямоугольника:центрирование прямоугольника в JFrame

public class RectDraw extends JComponent{ 

    Shape rect; 
    public void paint(Graphics g){ 
     Graphics2D graph2 = (Graphics2D)g; 
     graph2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     rect = new Rectangle2D.Float(50,50,15,15); 


     graph2.setPaint(Color.BLACK); 
     graph2.fill(rect); 
     graph2.draw(rect); 

    } 


} 

И главное:

public class TheMain{ 


    public static void main(String[] args) { 

     Screen screen = new Screen(); 
     RectDraw rect = new RectDraw(); 
     screen.add(rect, BorderLayout.CENTER); 

} 

И это экран класс:

public class Screen extends JFrame{ 


    public Screen(){ 
     this.setSize(500, 500); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setLocationRelativeTo(null); 
     this.setResizable(false); 
     this.setTitle("Testing"); 
     this.getContentPane().setBackground(Color.GRAY); 
     this.setVisible(true); 

    } 
} 

Так что я должен изменить, чтобы Поместите этот прямоугольник в центр jframe?

Спасибо!

+3

'(GetWidth() - ширина)/2' используется в качестве' x' значения 'Rectangle2D' будет центрировать прямоугольник по горизонтали, если' width' используется в качестве ширины прямоугольника. Угадайте, как бы вы хотели сосредоточиться на высоте? –

ответ

-1

Вам необходимо переопределить .

Такое, что ваш прямоугольник шириной 50 высота 100. Просто выполните некоторые математические вычисления.

@Override 
public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    Graphics2D graph2 = (Graphics2D)g; 
    //To center the rectangle, we need to specify the center x,y points on the frame 
    //Divide width and height into two, and minus the width and height of the rectangle 
    graph2.drawRect(getWidth()/2 - 50/2, getHeight()/2 - 100/2, 50, 100); 
} 
+2

(1-) 'Вам нужно передать свой экран' - нет, вы этого не сделаете. Вы просто получаете размер компонента, используя методы getWidth() и 'getHeight()' этого компонента. Тогда вы делаете свою математику. Также вы должны переопределить 'paintComponent()', а не paint(). – camickr