Kolejny problem:
Jak zrobić właśnie rysunek na panelu... Oto mój kod:
package pilka;
import java.awt.Graphics;
public class Pilka extends javax.swing.JFrame {
public Pilka() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}
public void paint(Graphics g){
jPanel1.paint(g);
g.clearRect(0, 0, getSize().width, getSize().height);
g.fillOval(0, 0, 300, 300);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Pilka().setVisible(true);
}
});
}
private javax.swing.JPanel jPanel1;
}
Wydaje mi się, że powinno być wszystko ok, ale tak jednak nie jest. Mianowicie Narysowane kółko jest rysowane na obszarze całego okna (łącznie z paskiem, co w efekcie daje ucięcie rysunku). Dlaczego tak jest? Przecież utworzyłem panel i w metodzie paint dodałem odpowiedni kod (jPanel1.paint(g);).