2015-12-15 2 views
1

вот мой классСтранные JPanel краска

public class Grid extends JPanel{ 
    public Grid(Dimension dim){ 
     this.dim = dim; 
     step = 0.02; 
     this.setSize(dim); 
     this.setLocation(0, 0); 
    } 

    @Override 
    public void paint(Graphics g){ 
     for(int i=-1; i<this.getHeight(); i+=this.getHeight()*step){ 
      g.drawLine(0, i, this.getWidth(), i); 
     } 
     for(int i=-1; i<this.getWidth(); i+=this.getWidth()*step){ 
      g.drawLine(i, 0, i, this.getHeight()); 
     } 
    } 
} 

(я пропустил определение переменных класса)

добавить этот класс в другой JPanel как этот

Grid grid = new Grid(dim); 
parentPanel.add(grid); 

По умолчанию, сетка скрыта (grid.hide();), поэтому мой jFrame выглядит примерно так: enter image description here

где «синяя» область - это родительская панель, а «оранжевая» область - JPanel с кнопками. Проблема в том, что когда я нажимаю кнопку сетки, я получаю следующий результат: enter image description here

где линии сетки в порядке, но я также получаю этот оранжевый ящик, который я не знаю, почему.

Любые идеи?

+0

, что эти кнопки в верхней? вы уверены, что не добавили кнопку на панель? Я думаю, вы указали слишком мало кода, чтобы помочь. – mxb

+0

они случайные кнопки моей программы, да я не добавлял ни одной кнопки на панель (забыл упомянуть, что я могу добавить и другие JPanels, которые могут быть перемещены с помощью мыши над панелью. Если я переведу одну из них поверх странный оранжевый ящик, он исчезает, как будто он стирается) –

+0

возможно, требуется вызвать 'super.paint()' в 'public void paint (Graphics g);'? – mxb

ответ

0

мне пришлось добавить следующую строку внутри моего конструктора

this.setOpaque(false); 
Смежные вопросы