Hallo und einen wunderschönen Feiertag,
ich habe mir hier aus dem Forum ein tolles Beispiel für das Zeichnen (was von Beni) geholt und gleich in mein kleines Projekt eingebaut.
Nun habe ich das Problem, dass
1. desktop.setBackground(Color.ORANGE);
nicht mehr funktioniert
2. Beim Starten meine Rechtecke nicht angezeigt werden. Erst wenn ich die Größe (z.B. Vollbild) auf meinen JFrame mache, werden teile angezeigt.
Wie kann ich erzwingen, dass direkt beim Start die Zeichungen vorgenommen werden.
ich habe mir hier aus dem Forum ein tolles Beispiel für das Zeichnen (was von Beni) geholt und gleich in mein kleines Projekt eingebaut.
Nun habe ich das Problem, dass
1. desktop.setBackground(Color.ORANGE);
nicht mehr funktioniert
2. Beim Starten meine Rechtecke nicht angezeigt werden. Erst wenn ich die Größe (z.B. Vollbild) auf meinen JFrame mache, werden teile angezeigt.
Wie kann ich erzwingen, dass direkt beim Start die Zeichungen vorgenommen werden.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;
public class startWilkenKundenDB extends JFrame implements ActionListener
{
private Vector image = new Vector();
public static JDesktopPane desktop;
private JMenuItem exitItem, mitarbeiterItem, firmaItem, ansprechItem;
public static void main(String[] args)
{
startWilkenKundenDB app = new startWilkenKundenDB();
}
public startWilkenKundenDB()
{
// Set the look and feel
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex)
{
ex.printStackTrace();
}
// Create and add JDesktopPane
desktop = new JDesktopPane();
getContentPane().add(desktop);
desktop.setBackground(Color.ORANGE);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("Datei");
menuBar.add(fileMenu);
exitItem = new JMenuItem("Beenden");
exitItem.addActionListener(this);
fileMenu.add(exitItem);
JMenu windowMenu = new JMenu("Anzeigen");
menuBar.add(windowMenu);
mitarbeiterItem = new JMenuItem("Mitarbeiterdaten");
mitarbeiterItem.addActionListener(this);
windowMenu.add(mitarbeiterItem);
firmaItem = new JMenuItem("Firmen");
firmaItem.addActionListener(this);
windowMenu.add(firmaItem);
ansprechItem = new JMenuItem("Ansprechpartner");
ansprechItem.addActionListener(this);
windowMenu.add(ansprechItem);
// Set some window parameters
setTitle("Wilken Kundendatenbank Version 1.0");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1024,768);
setVisible(true);
jifAuswahlWindow.getInstance().setLocation(200,610);
jifAuswahlWindow.getInstance().setSize(600,100);
jifAuswahlWindow.getInstance().setBackground(Color.WHITE);
desktop.add(jifAuswahlWindow.getInstance());
jifAuswahlWindow.getInstance().moveToFront();
// Ein paar Beispiele zusammenbauen
for (int j = 0; j < 6; j++ ){
for( int i = 0; i < 7; i++ ){
int x1 = (300 + (i * 40));
int x2 = (300 + (j * 20));
int y1 = 40;
int y2 = 20;
Color color = new Color(255,255,255);
boolean fill = false;
image.add( new Rechteck( x1, x2, y1, y2, color, fill ));
}
}
}
// alles zeichnen -- Code von Beni - Danke dafür !!!
public void paint( Graphics g ){
for( int i = 0; i<25; i++ )
((Paintable)image.get(i)).paint( g );
}
public void actionPerformed(ActionEvent evt){
Object source = evt.getSource();
if (source == exitItem)
System.exit(0);
else if (source == mitarbeiterItem)
{
addjifMitarbeiterDaten();
}
else if (source == firmaItem)
{
addjifFirmaDaten();
}
else if (source == ansprechItem)
{
addjifAnsprechDaten();
}
}
public static void addjifMitarbeiterDaten() {
jifMitarbeiterDaten mitarbeiterWindow = new jifMitarbeiterDaten();
mitarbeiterWindow.setLocation(20,10);
mitarbeiterWindow.setSize(900,590);
mitarbeiterWindow.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
desktop.add(mitarbeiterWindow);
mitarbeiterWindow.moveToFront();
}
public static void addjifFirmaDaten() {
jifFirmaDaten firmaWindow = new jifFirmaDaten();
firmaWindow.setLocation(60,10);
firmaWindow.setSize(900,590);
firmaWindow.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
desktop.add(firmaWindow);
firmaWindow.moveToFront();
}
public static void addjifAnsprechDaten() {
jifAnsprechDaten ansprechWindow = new jifAnsprechDaten();
ansprechWindow.setLocation(100,10);
ansprechWindow.setSize(900,590);
ansprechWindow.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
desktop.add(ansprechWindow);
ansprechWindow.moveToFront();
}
}
// Oberklasse, für gemeinsahme Grundlage -- Code von Beni - Danke dafür !!!
abstract class Paintable{
private int x, y, w, h;
private Color color;
private boolean fill;
public Paintable( int x, int y, int w, int h, Color color, boolean fill ){
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.color = color;
this.fill = fill;
}
public abstract void paint( Graphics g );
public int getX(){ return x; }
public int getY(){ return y; }
public int getWidth(){ return w; }
public int getHeight(){ return h; }
public Color getColor(){ return color; }
public boolean isFill(){ return fill; }
}
// Rechteck -- Code von Beni - Danke dafür !!!
class Rechteck extends Paintable{
public Rechteck( int x, int y, int w, int h, Color color, boolean fill){
super( x, y, w, h, color, fill );
}
public void paint( Graphics g ){
g.setColor( getColor() );
if( isFill() )
g.fillRect( getX(), getY(), getWidth(), getHeight() );
else
g.drawRect( getX(), getY(), getWidth(), getHeight() );
}
}