Hallo,
Wie kann man eine Componente in eine JPane packen, die selber etwas zeichnen soll?
Ich möchte ein Anwendung, die aus einem Fenster besteht, zur Anzeige von Objekten über einem Gitter bringen.
Doch schon das Gitter stelltt sich nicht dar .. was mache ich denn falsch?
Und wie finde ich den "Nullpunkt" des mittleren JPanels, ich will die Objekte relativ dazu zeichnen.
Bitte schaut mal .. vielen Dank schonmal
Kaffeeknirps
Wie kann man eine Componente in eine JPane packen, die selber etwas zeichnen soll?
Ich möchte ein Anwendung, die aus einem Fenster besteht, zur Anzeige von Objekten über einem Gitter bringen.
Doch schon das Gitter stelltt sich nicht dar .. was mache ich denn falsch?
Und wie finde ich den "Nullpunkt" des mittleren JPanels, ich will die Objekte relativ dazu zeichnen.
Bitte schaut mal .. vielen Dank schonmal
Kaffeeknirps
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class testapp
extends JFrame
implements ActionListener, WindowListener, MouseListener
{
public testapp()
{
super("nur ein Test");
this.addWindowListener(this);
this.addMouseListener(this);
JPanel topMessage = new JPanel();
JLabel label = new JLabel("Ein Label");
topMessage.add(label);
topMessage.setBorder(BorderFactory.createEtchedBorder());
getContentPane().add(topMessage, BorderLayout.NORTH);
JPanel map = new JPanel();
Gitternetz Gitter= new Gitternetz();
map.add(Gitter);
map.setBorder(BorderFactory.createEtchedBorder());
getContentPane().add(map, BorderLayout.CENTER);
JPanel ButtonPanel = new JPanel();
JButton CloseButton = new JButton("Programm beenden");
CloseButton.addActionListener(this);
ButtonPanel.add(CloseButton);
ButtonPanel.setBorder(BorderFactory.createEtchedBorder());
getContentPane().add(ButtonPanel, BorderLayout.SOUTH);
}
public static void main(String args[]) {
testapp app = new testapp();
app.pack();
app.setLocation(100,100);
app.setSize(500,500);
app.setVisible(true);
}
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (command.equals("Programm beenden")) {System.exit(0);}
}
public void mouseClicked(MouseEvent event)
{
System.out.println(""+ event.getX() +" "+ event.getY());
}
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
// Rechteck zeichnen
class Rechteck
extends JComponent
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.white);
g.drawRect(100,100,200,200);
}
}
// Gitternetz zeichnen
class Gitternetz
extends JComponent
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int width = getSize().width;
int height = getSize().height;
g.setColor(Color.gray);
for (int i = 0; i < width; i += 20)
{
g.drawLine(i, 0, i, height);
}
for (int i = 0; i < height; i += 20)
{
g.drawLine(0, i, width, i);
}
}
}