Hallo,
ich habe ein Problem bei meinem ersten Java-Programm und hoffe hier auch Hilfe.
Unzwar kann ich den JFrame erstellen wird auch angezeigt.. Die Balken per Tastendruck zu vergrößern funktioniert auch. Nur ist der Panel mit den Rechtecken ist so groß, dass er den Hintergrund ganz übermalt. Genauso ist das andersrum.
Ich möchte am Ende ein Bild haben auf dem die Rechtecke genauso gezeichnet werden.
Sitze jetzt seit 2 Tagen an diesem PRoblem und hoffe jemand kann mir helfen.
Hier die Klasse mit dem Frame:
Dann Panel mit Rechteck:
und das Panel für den Hintergrund:
Dazu noch die Klasse zum abrufen:
ich habe ein Problem bei meinem ersten Java-Programm und hoffe hier auch Hilfe.
Unzwar kann ich den JFrame erstellen wird auch angezeigt.. Die Balken per Tastendruck zu vergrößern funktioniert auch. Nur ist der Panel mit den Rechtecken ist so groß, dass er den Hintergrund ganz übermalt. Genauso ist das andersrum.
Ich möchte am Ende ein Bild haben auf dem die Rechtecke genauso gezeichnet werden.
Sitze jetzt seit 2 Tagen an diesem PRoblem und hoffe jemand kann mir helfen.
Hier die Klasse mit dem Frame:
Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class Fenster extends JFrame implements KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
BackgroundPan bg = new BackgroundPan();
Panel pan = new Panel();
public Fenster(){
this.setTitle("Schule ohne Rassismus");
//this.setUndecorated(true);
//this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setSize(500, 600);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBackground(Color.black);
Container cp = getContentPane();
cp.add(bg);
cp.add(pan);
this.addKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int c = e.getKeyCode();
if(c==KeyEvent.VK_1){
int x = pan.getPosX1();
x=x+1;
pan.setPosX1(x);
pan.repaint();}
if(c==KeyEvent.VK_2){
int x = pan.getPosX2();
x=x+1;
pan.setPosX2(x);
pan.repaint();}
if(c==KeyEvent.VK_3){
int x = pan.getPosX3();
x=x+1;
pan.setPosX3(x);
pan.repaint();}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
Dann Panel mit Rechteck:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class Panel extends JPanel{
private static final long serialVersionUID = 1L;
public int posX1 = 10;
public int posX2 = 10;
public int posX3 = 10;
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.blue);
g2.fillRect( 120, 100,posX1, 30);
g2.fillRect( 120, 200,posX2, 30);
g2.fillRect( 120, 300,posX3, 30);
g2.setColor(Color.black);
if ((posX1+posX2+posX3)<=650){
g2.fillRect( 120,420,(posX1+posX2+posX3),50);}
else{
g2.fillRect( 120,420,650,50);}
}
//1
public int getPosX1() {
return posX1;}
public void setPosX1(int posX1) {
this.posX1 = posX1;}
//2
public int getPosX2() {
return posX2;}
public void setPosX2(int posX2) {
this.posX2 = posX2;}
//3
public int getPosX3() {
return posX3;}
public void setPosX3(int posX3) {
this.posX3 = posX3;}
}
und das Panel für den Hintergrund:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class BackgroundPan extends JPanel{
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.green);
g2.fillRect( 0,0,1500,1000);
}
}
Java:
import javax.swing.JFrame;
public class Main extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
Fenster fen = new Fenster();
}
}
Zuletzt bearbeitet: