У меня есть jFrame (разрешение: 300x300), и я хочу отобразить в нем много эллипсов. Это разрешение поля должно быть 4000x4000. Как я могу это сделать? Для поля эллипсов я создал jComponent отображает все 500 эллипсов.
Вы видите, что будет отображаться только часть jComponent, как изменить размер jComponent, чтобы показать все эллипсы?
http://i.stack.imgur.com/75QA9.png
Это моя область эллипсов / jComponent
package home;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JComponent;
public class Karte extends JComponent {
private static final long serialVersionUID = 1L;
int AMOUNT= 500;
public ArrayList<Ellipse2D> Kreise = new ArrayList<Ellipse2D>();
public Karte() {
createCircles(AMOUNT);
}
private void createCircles(int AMOUNT) {
Random r = new Random();
for (int i = 1; i <= AMOUNT; i++) {
Kreise.add(new Ellipse2D.Double(r.nextInt(4000), r.nextInt(4000), 4, 4));
}
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D kreis = (Graphics2D) g;
for (Ellipse2D t : Kreise) {
kreis.setColor(Color.BLACK);
kreis.draw(t);
}
}
}
и это мой графический интерфейс
package home;
import java.awt.Dimension;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
public class NewJFrame extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
public NewJFrame() {
initComponents();
}
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
karte1 = new home.Karte();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout karte1Layout = new javax.swing.GroupLayout(karte1);
karte1.setLayout(karte1Layout);
karte1Layout.setHorizontalGroup(karte1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER).addGap(0, 4000, Short.MAX_VALUE));
karte1Layout.setVerticalGroup(karte1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER).addGap(0, 4000, Short.MAX_VALUE));
karte1.setBounds(0, 0, 4000, 4000);
karte1.setMinimumSize(new Dimension(300, 300));
jLayeredPane1.add(karte1, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300,
Short.MAX_VALUE));
layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300,
Short.MAX_VALUE));
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
private javax.swing.JLayeredPane jLayeredPane1;
private home.Karte karte1;
}