Heim > Fragen und Antworten > Hauptteil
package Drawing;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import java.awt.event.MouseMotionAdapter;
import java.awt.Color;
import javax.swing.border.LineBorder;
import java.awt.Window.Type;
public class DrawingBoard extends JPanel{
private JFrame frmDrawingboard;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DrawingBoard window = new DrawingBoard();
window.frmDrawingboard.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public DrawingBoard() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
int x1, y1, x2, y2;
Vector<Shapes> vectorShapes = new Vector<Shapes>();
private void initialize() {
frmDrawingboard = new JFrame();
frmDrawingboard.setResizable(false);
frmDrawingboard.setTitle("DrawingBoard\r\n");
frmDrawingboard.getContentPane().setBackground(Color.DARK_GRAY);
frmDrawingboard.setBounds(100, 100, 464, 350);
frmDrawingboard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmDrawingboard.getContentPane().setLayout(null);
JComboBox comboBox = new JComboBox();
comboBox.setForeground(Color.RED);
comboBox.setBackground(Color.BLACK);
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Line", "Rectangle", "Oval"}));
comboBox.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
comboBox.setBounds(345, 280, 102, 21);
frmDrawingboard.getContentPane().add(comboBox);
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(new Color(0, 0, 0), 2, true));
panel.setBackground(Color.WHITE);
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
x1 = e.getX();
y1 = e.getY();
Shapes c =new Shapes();
switch(comboBox.getSelectedIndex()){
case -1:c = new Line(x1,y1,x1,y1);break;
case 0:c = new Rectangle(x1,y1,x1,y1);break;
case 1:c = new Oval(x1,y1,x1,y1);break;
} //end switch
vectorShapes.add(c);
}
});
panel.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
vectorShapes.get(vectorShapes.size()-1).x2 = e.getX();
vectorShapes.get(vectorShapes.size()-1).y2 = e.getY();
repaint();
}
});
panel.setBounds(10, 10, 437, 260);
frmDrawingboard.getContentPane().add(panel);
}
protected void paintComponent(Graphics g){
g.clearRect(0, 0, getWidth(), getHeight());
for(int i = 0; i < vectorShapes.size(); i++)
{
vectorShapes.get(i).draw(g);
}
}
}