2016-09-21 8 views
-1

У меня возникла небольшая проблема с получением моей составной границы. Раньше у меня была игра с границами, и это казалось лучшим способом заставить мой план работать.Трудно сделать сложную рамку

Мой план состоит в том, чтобы просто иметь коробку с противоположными сторонами коробки, синюю и красную.

container.setBorder(BorderFactory.createCompoundBorder()); 
    container.setBorder(BorderFactory.createMatteBorder(0, 10, 0, 10, Color.red)); 
    container.setBorder(BorderFactory.createMatteBorder(10, 0, 10, 0, Color.blue)); 

Это код, который у меня есть в настоящее время, и я до сих пор не могу получить составной элемент. Я думаю, что мне не хватает чего-то совершенно очевидного, но я чувствую, что еще одна пара глаз может помочь, поэтому я публикую здесь.

+1

Компонент может иметь только один 'Border', поэтому метод называется' setBorder() 'и не что-то вроде' getBorders() добавить() '.. Функция «CompoundBorder» состоит в том, чтобы удерживать два отдельных «пограничника», быстрый поиск в [документации] (https://docs.oracle.com/javase/7/docs/api/javax/swing/border/ CompoundBorder.html) ответили бы на это. Кроме того, для будущих вопросов всегда указывайте компилируемую [MCVE], которая демонстрирует проблему. –

ответ

4

Вы не можете установить 3 различных границы для компонента. Вы должны установить границу только один раз. Попробуйте следующее:

Border inner = BorderFactory.createMatteBorder(0, 10, 0, 10, Color.RED); 
Border outer = BorderFactory.createMatteBorder(10, 0, 10, 0, Color.BLUE); 
container.setBorder(BorderFactory.createCompoundBorder(outer, inner)); 
+0

Прочтите учебник Swing на [Как использовать границы] (http://docs.oracle.com/javase/tutorial/uiswing/components/border.html). Вы найдете множество рабочих примеров, показывающих, как это сделать. Учебник также может использоваться в качестве справочной информации для других основ Swing. – camickr

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