Как отрегулировать место прямоугольника с помощью Java

1

как автоматически отрегулировать место прямоугольника?
например, у меня 5 прямых

здесь мой код:

import java.awt.*;
import javax.swing.*;
import java.util.*;
public class gambar
{
    JFrame fr=new JFrame("exampe");
    JScrollPane sc;
    int hight,weight;
    JTabbedPane tab=new JTabbedPane();
    gambar()
    {   
        int[]x=new int[5];
        int[]y=new int[5];
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.setLocation(0,0);
        fr.setExtendedState(JFrame.MAXIMIZED_BOTH);
        fr.setLayout(new GridLayout(1,1));
        tab.addTab("Panel1",new panel1());
        fr.add(tab);    
        fr.show();
    }
    public static void main(String[] args)
    {
        new gambar();
    }
}
class panel1 extends JPanel
{
    panel1()
    {
    }
    public void paintComponent(Graphics g3)
    {
        int x=0,y=0;
        for(int i=1;i<=5;i++)
        {
            if(i==1)
            {   x=50;y=50;  }
            else if(i==2)
            {   x=300;y=50; }
            else if(i==3)
            {   x=50;y=200; }
            else if(i==4)
            {   x=300;y=200;}
            else if(i==5)
            {   x=175;y=125;    }
            g3.setColor(Color.yellow);
            g3.fillRect(x,y,90,30);
            g3.setColor(Color.black);
            g3.drawString("square "+i,x+5,y+15);
        }
    }
}

вывод здесь:

Изображение 174551

если у меня есть 4 rect, вывод, как здесь

Изображение 174551

если 3 rect, вывод, как здесь

Изображение 174551

я понятия не имею, как автокорректировать место без заданной координаты.
Извините за мой английский.

Теги:
rectangles

1 ответ

1

Все это основная геометрия. Напишите его на бумаге.

Предположим, что стороны области называются w и h, тогда вы можете легко вычислить центр каждого прямоугольника. Из центра вычитаем половину ширины прямоугольника, чтобы получить координату x, и половину высоты получить координату y верхнего края и т.д. Если вы хотите сохранить некоторое пространство вокруг него, вы сначала вычтите это пространство из w и h выше, и вы добавляете половину этого пространства к каждой координате x и y каждого из прямоугольников.

для 5 прямоугольников

x1 = 0 + rectangle_width/2, y1 = 0 + rectangle_height / 2
x2 = w - rectangle_width/2, y2 = 0 + rectangle_height / 2
x3 = w / 2, y3 = h / 2
x4 = 0 + rectangle_width/2, y4 = h - rectangle_height / 2
x5 = w - rectangle_width/2, y5 = h - rectangle_height / 2

для 4 прямоугольников

x1 = 0 + rectangle_width/2, y1 = 0 + rectangle_height / 2
x2 = w - rectangle_width/2, y2 = 0 + rectangle_height / 2
x3 = 0 + rectangle_width/2, y3 = h - rectangle_height / 2
x4 = w - rectangle_width/2, y4 = h - rectangle_height / 2

для 3 прямоугольников

x1 = 0 + rectangle_width/2, y1 = 0 + rectangle_height / 2
x2 = w - rectangle_width/2, y2 = 0 + rectangle_height / 2
x3 = w / 2, y2 = h - rectangle_height / 2
  • 0
    как, если прямоугольники 10 или 20 или больше ???
  • 0
    Это зависит от того, как вы хотите их выложить. Есть неограниченное количество разных способов сделать это.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню