Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich Benutze ein BorderLayout. Beim Start des Programms wird ein Rechteck gezeichnet.
der Zeichenbereich ist CENTER.
Ich fügte noch ein paar Buttons hinzu (NORTH). Nun wird mein Rechteck verschoben gezeichnet.
Wie bekomme ich es hin, das der ZeichenBereich nicht gestaucht wird??
hier mal ein Stück Code.
Code:
mal= new Drawit();
mal.setSize(500,500);
ButtonGroup bgr = new ButtonGroup();
move = new JToggleButton("move");
..
bgr.add(move);
..
JPanel buttonleiste = new JPanel(new GridLayout(0,5));
buttonleiste.add(move);
..
getContentPane().add(buttonleiste, BorderLayout.NORTH);
getContentPane().add(mal, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLocation(100, 100);
}
public static void main(String[] args){
Handmanager f = new Handmanager();
f.setVisible(true);
}
Ich hoffe jemand weiss hier Rat den ich bin echt ratlos....
Danke für die Mühe. aber so funzt es auch nicht.
Mit Verschoben mein ich, daß mein gezeichnetes rechteck 2mal da ist . einmal an der richtigen position und einmal nach unten versetzt.
ohne Buttons. entsteht nur ein Rechteck..
hier mal der ganze code.
es ist etwas viel zum posten aber so kann man es testen.
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
class Handmanager extends JFrame implements MouseListener, MouseMotionListener{
HandDrawit mal;
JToggleButton move;
JToggleButton rotate;
JToggleButton point;
JToggleButton rect;
JToggleButton scale;
Handmanager(){
mal= new HandDrawit();
mal.addMouseListener(this);
mal.addMouseMotionListener(this);
mal.setPreferredSize(new Dimension(500,500));
ButtonGroup bgr = new ButtonGroup();
move = new JToggleButton("move");
rotate = new JToggleButton("rotate");
point = new JToggleButton("point");
rect = new JToggleButton("rect");
scale = new JToggleButton("scale");
bgr.add(move);
bgr.add(rotate);
bgr.add(point);
bgr.add(rect);
bgr.add(scale);
JPanel buttonleiste = new JPanel(new GridLayout(0,5));
buttonleiste.add(move);
buttonleiste.add(rotate);
buttonleiste.add(point);
buttonleiste.add(rect);
buttonleiste.add(scale);
getContentPane().add(buttonleiste, BorderLayout.NORTH);//diese Zeile auskomm. = alles richtig
getContentPane().add(mal, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,600);
setLocation(100, 100);
}
public static void main(String[] args){
Handmanager f = new Handmanager();
f.pack();
f.setVisible(true);
}
public void mouseClicked(MouseEvent e) {
if(e.getSource() == mal){
mal.rectPunkte.clear();
mal.getRectPoint(e.getPoint());
}
repaint();
}
public void mouseDragged(MouseEvent e) {
if(e.getSource() == mal ){
mal.rotategraph(e.getPoint());
}
repaint();
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
ich möchte auch 2 mal zeichnen.
das erste ist nur da, damit ich sehe ob die koordinaten verschoben sind(durch die Buttons) oder nicht.
wenn du die zeile :
getContentPane().add(buttonleiste, BorderLayout.NORTH);
auskommentierst. siehst du das EIN rechteck erscheint.
das ist das erste draw(rechteck).
wenn ich es entferne ist das Problem scheinbar gelöst aber halt nur scheinbar.
der Zeichen bereich bleibt gestaucht und ärgert meine AffineTransfom.
Ich habe es zur kontrolle eingefügt.
wenn ich es so auskommentiere. sieht es super aus . hast recht.
Nun drehe ich das rechteck. und es flackert beim drehen ein weiteres auf.
das flackernde bleibt zwar nicht, ist aber um den bereich der Buttons verschoben.
um der Sache auf den Grund zu gehen fügte ich die Zeile(g2d.draw(rechteck)) ein.
und siehe da . Mein Koordinatensystem wird durch die Buttons geändert.
Also bei mir flackert da nichts, und die Koordinaten stimmen auch.
Natürlich wird das Koordinatensystem geändert, das sind ja alles Koordinaten relativ zum Ursprung deines Panels, aber das ist ja auch ok...