Bisher habe ich es so den Code erstellt zwei Frames: ein Frame, wo die DrawingComponent und ein Frame mit interaktiven Schaltflächen darauf platziert wird. Derzeit kann der Benutzer zwischen dem Zeichnen einer Linie, eines Rechtecks oder einer Ellipse wählen. Ich habe MouseActionListener für die DrawingComponent eingerichtet, so dass das Zeichnen jeder Form individuell funktioniert.Versuchen Sie, eine Jframe-Klasse und eine Jcomponent-Klasse zu interagieren, wenn der Benutzer eine JCheckBox prüft
public class DrawingViewer extends JFrame {
private JFrame controlFrame;
private JButton drawButton, fillButton, undoButton;
private JCheckBox lineBox, recBox, ellipseBox;
private JLabel drawLabel, fillLabel;
private DrawingComponent component;
public DrawingViewer() {
setupThisFrame();
setupControlFrame();
setupButtons();
showFrames();
}
....
fillLabel = new JLabel();
fillLabel.setOpaque(true);
fillLabel.setFont(new Font("Consolas", Font.PLAIN,12));
fillLabel.setForeground(Color.BLACK);
fillLabel.setBackground(null);
if(fillLabel.getBackground() != null){
fillLabel.setText(" ");
}
else{
fillLabel.setText(" nothing ");
}
....
class shapeCheckListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == lineBox){
System.out.println("Line Chosen");
component.setLine();
}
else if (e.getSource() == recBox){
System.out.println("Rectangle Chosen");
component.setRec();
}
else if (e.getSource() == ellipseBox){
System.out.println("Ellipse Chosen");
component.setEllipse();
}
}
}
}
----------------------------------------------------------
public class DrawingComponent extends JComponent {
private int mouseX;
private int mouseY;
private int mouseX2;
private int mouseY2;
public Shape shape;
public Color borderColor;
public Color fillColor;
public DrawingComponent() {
setupMouse();
}
@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(shape != null){
g2.draw(shape);
}
else{
shape = null;
}
}
public void setLine(){
shape = new Line2D.Double(mouseX, mouseY, mouseX2, mouseY2);
}
public void setRec(){
shape = new Rectangle(Math.min(mouseX, mouseX2), Math.min(mouseY, mouseY2) , Math.abs(mouseX - mouseX2), Math.abs(mouseY - mouseY2));
}
public void setEllipse(){
shape = new Ellipse2D.Double(Math.min(mouseX, mouseX2), Math.min(mouseY, mouseY2), Math.abs(mouseX - mouseX2), Math.abs(mouseY - mouseY2));
}
Wo ist Javascript? – Viney