2015-02-25 2 views
0

Я пытаюсь заполнить JFrame JPanel и цвет, который JPanel, но по какой-то причине я получаю границу на нижних правых краях.Нежелательная граница JPanel в JFrame

Мой код:

public class Main extends JFrame { 

    public MyPanel myPanel = new MyPanel(); 

    public static void main(String args[]) 
    { 
     Main main = new Main(); 
     main.init(); 
    } 

    public void init() 
    { 
     this.setSize(300,400); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setContentPane(myPanel); 
     this.setVisible(true); 
    } 

    @Override 
    public void paint(Graphics g) 
    { 
     myPanel.paintComponents(g); 
    } 

    class MyPanel extends JPanel 
    { 
     @Override 
     public void paintComponents(Graphics g) 
     { 
      g.fillRect(0, 0, getWidth(), getHeight()); 
     } 
    } 
} 

Шоу:

enter image description here

ответ

3

Вы замыкая цепь краски с этим методом

@Override 
public void paint(Graphics g) { 
    myPanel.paintComponents(g); 
} 

Это разве действительно делает что-нибудь полезное поэтому вы можете удалить его. Кроме того, необходимо переопределить paintComponent, а не paintComponents в MyPanel

@Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.fillRect(0, 0, getWidth(), getHeight()); 
    } 

стороне:

  • Вы могли бы просто создали группу и назвали setBackground, чтобы получить эту функцию
+0

Но если считать, что ничто не будет расписано! – mbdavis

+0

См. Обновление ....... – Reimeus

+0

Это исправлено. Спасибо! – mbdavis