2013-11-07 2 views
0

У меня есть подкласс JPanel и переопределение paintComponent(Graphics g) и вызов g.drawRect(0, 0, 500, 75). Внутри моей основной метод, который я инициализировать его и вызвать setBounds(50, 400, 500, 75) на него, но когда он рисует прямоугольник это только рисунок что-то вроде этого:Подкласс JPanel не рисует всю форму

|________________ 

и пропуская две другие стороны. Извините, у меня нет кода, это на другом компьютере. Есть идеи?

+1

Java GUI, возможно, придется работать на нескольких платформах, на разных разрешениях экрана и с использованием разных PLAF. Таким образом, они не способствуют точному размещению компонентов. Чтобы организовать компоненты для надежного графического интерфейса, вместо этого используйте менеджеров компоновки или [их комбинаций] (http://stackoverflow.com/a/5630271/418556), а также макеты и границы для [пробела] (http: //stackoverflow.com/q/17874717/418556). –

ответ

1

Во-первых, используйте;

g.drawRect(0, 0, 499, 74); 

Во-вторых, не используйте setBounds использовать соответствующие менеджеров компоновки и переопределить getPreferredSize (и при необходимости getMinimum/MaximumSize)

В-третьих, не полагаться на магических чисел ...

g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); 
+0

Я использую 'setBounds', потому что я не использую диспетчер компоновки – Chris

+1

@Chris Я понимаю это, и если у вас есть очень хорошая (и я имею в виду ОЧЕНЬ ХОРОШО), причина для этого – MadProgrammer

Смежные вопросы