2016-06-12 1 views
0

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

g.setColor(getBackground()); 
g.fillPolygon(hexagon); 
g.setColor(getForeground()); 
g.drawPolygon(hexagon); 

Всякий раз, когда каждый шестиугольник завис над, весь прямоугольник на передний план, в результате чего белый прямоугольник появляются вокруг края перекрывающей другие шестиугольники. http://prntscr.com/bfiixt < - пример проблемы.

Как я могу сделать этот фон прозрачным, чтобы у меня не было проблемы, или как я могу остановить нажатие кнопки на передний план? Спасибо.

FontMetrics fm = getFontMetrics(getFont()); 
     Rectangle viewR = getBounds(); 
     Rectangle iconR = new Rectangle(); 
     Rectangle textR = new Rectangle(); 

     SwingUtilities.layoutCompoundLabel(this, fm, getText(), null, SwingUtilities.CENTER, 
       SwingUtilities.CENTER, SwingUtilities.BOTTOM, SwingUtilities.CENTER, viewR, iconR, textR, 0); 

     Point location = getLocation(); 
     g.drawString(getText(), textR.x - location.x, textR.y - location.y + fm.getAscent()); 
+0

Любой код, который нам поможет? – SomeDude

+0

@svasa Я отредактировал это и добавил код. – oodle600

ответ

0

Исправлено путем добавления этого кода:

btn.setContentAreaFilled(false); 
btn.setFocusPainted(false); 
btn.setBorderPainted(false); 

Для других, имеющих эту проблему, это фиксируется, изменив что-либо за пределами шестиугольника внутри объекта к прозрачному.

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