У меня есть основной класс, который расширяет JFrame, который затем добавляет jpanel в jframe. Затем я пытаюсь установить цвет фона jpanel, но безрезультатно. Я не совсем уверен, где проблема, в соответствии с тем, что я нашел в google, просто установка setBackground(Color)
в JPanel должна исправить это, но, похоже, это не работает. Кроме того, другие исправления для этого были setOpaque(true)
и setVisible(true)
, или образуют JFrame с использованием getContentPane().setBackground(Color)
Но ни один из них, похоже, не работает. Любые предложения были бы очень оценены, и если вам нужна дополнительная информация или у вас есть другие советы, пожалуйста, не стесняйтесь просвещать меня. :) Основной класс:Java Jpanel, не может установить цвет фона
public class main extends JFrame{
private Content content;
public main(){
content = new Content(400, 600);
this.setTitle("Shooter2.0");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.getContentPane().add(content);
this.getContentPane().setBackground(Color.BLACK);
this.pack();
this.setVisible(true);
try{
Thread.sleep(10000);
}catch(Exception e){}
}
public static void main(String[] args){
main game = new main();
}
}
и Content класс:
public class Content extends JPanel{
private viewItem ship;
public Content(int w, int h){
this.setPreferredSize(new Dimension(w, h));
this.setLayout(new BorderLayout());
this.createBattlefield();
this.setOpaque(true);
this.setBackground(Color.BLACK);
this.repaint();
this.setVisible(true);
}
public void createBattlefield(){
ship = new viewItem("bubble-field.png", 180, 550, 40, 42);
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
this.setBackground(Color.BLACK);
ship.draw(g);
}
}
Это работает, почему это плохая идея, чтобы переопределить краска (г)? – samuraiseoul
'paintComponent' использует двойную буферизацию, поэтому она более эффективна. – Reimeus
Хорошо, спасибо, много! – samuraiseoul