U
usuff
Gast
hi,
ich verwende 2 JPanels für die GUI eines Schachbretts.
das eine panel soll ausschließlich das spielfeld mit randbeschriftungen enthalten und dann einem anderen panel, das die gesamte sichtbare Fläche(sprich die komplette GUI)aufnehmen soll hinzugefügt werden.
mein spielfeld mit randbeschriftung wird auch alles gezeichnet, nur kann ich die hintergrundfarbe meines spielfeldes nicht ändern. Die hintergrundfarbe wird scheinbar fest von dem panel vorgegeben, dass mein spielfeld aufnimmt. woran liegt das:
hier mal der komplette code
der hintergrund ist komplett grün, weil die visualArea als Backgroundfarbe grün hat, die farbe die ich "this" gegeben hab, wird nicht berücksichtigt. wie erreich ich es, dass mir die von "this" gesetzt hintergrundfarbe für die größe des this-panels auch angezeigt wird. (der rest der visual Area soll aber grün sein).
ich verwende 2 JPanels für die GUI eines Schachbretts.
das eine panel soll ausschließlich das spielfeld mit randbeschriftungen enthalten und dann einem anderen panel, das die gesamte sichtbare Fläche(sprich die komplette GUI)aufnehmen soll hinzugefügt werden.
mein spielfeld mit randbeschriftung wird auch alles gezeichnet, nur kann ich die hintergrundfarbe meines spielfeldes nicht ändern. Die hintergrundfarbe wird scheinbar fest von dem panel vorgegeben, dass mein spielfeld aufnimmt. woran liegt das:
hier mal der komplette code
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Schachbrett extends JPanel
{
private JFrame frame;
private JPanel visualArea;
final private int feldSize = 70;
final private int textSpace = 50;
public Schachbrett()
{
frame = new JFrame("Schachbrett");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(1024,768);
frame.setPreferredSize(frame.getSize());
frame.setLocationRelativeTo(null);
frame.setResizable(false);
this.setSize((feldSize*8+1)+ textSpace, (feldSize*8+1) + textSpace);
this.setPreferredSize(new Dimension((feldSize*8+1)+ textSpace, (feldSize*8+1)+ textSpace));
this.setBackground(new Color(255,23,132));
this.setOpaque(false);
visualArea = new JPanel();
visualArea.setSize(new Dimension(frame.getSize()));
visualArea.setPreferredSize(new Dimension(frame.getSize()));
visualArea.setLayout(new BorderLayout());
visualArea.setBackground(Color.green);
visualArea.add(this, BorderLayout.EAST);
frame.getContentPane().add(visualArea);
frame.pack();
frame.setVisible(true);
}
protected void paintComponent(Graphics g)
{
// Spielfeld zeichnen
for(int i=0; i < 8; i++)
for(int j=0; j < 8; j++)
{
g.drawRect((textSpace+ (feldSize*i)),
0 + (feldSize*j),
feldSize, feldSize);
if (i % 2 == 0 ^ j % 2 == 0)
g.setColor(Color.gray);
else
g.setColor(Color.white);
g.fillRect(textSpace + (feldSize*i),
0 + (feldSize*j), feldSize, feldSize);
}
//Gitternetz nachträglich zeichnen
g.setColor(Color.black);
for(int i=0; i < 8; i++)
for(int j=0; j < 8; j++)
{
g.drawRect((textSpace + (feldSize*i)),
0 + (feldSize*j),
feldSize, feldSize);
}
// Horizontale Spielfeldbeschriftung
char []letter ={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
// Vertikale Spielfeldbeschriftung
char []digits ={'1', '2', '3', '4', '5', '6', '7', '8'};
for(int i=0; i < 8; i++)
{
g.drawChars(letter,i, 1, textSpace + (feldSize/2) + (feldSize *i), feldSize *8 + 20);
g.drawChars(digits, i, 1, 20, feldSize/2 + feldSize*i);
}
}
public static void main(String []args)
{
new Schachbrett();
}
}
der hintergrund ist komplett grün, weil die visualArea als Backgroundfarbe grün hat, die farbe die ich "this" gegeben hab, wird nicht berücksichtigt. wie erreich ich es, dass mir die von "this" gesetzt hintergrundfarbe für die größe des this-panels auch angezeigt wird. (der rest der visual Area soll aber grün sein).