bmaster26 Posted April 1, 2012 at 11:12 PM Report Share #446978 Posted April 1, 2012 at 11:12 PM mais uma vez estou ca eu pessoal, agora ia pedir-vos o maximo de informaçao sobre o metodo repaint. o problema é,tenho varios rectangulos, ovais,linhas desenhadas num painel. o que pretendo,é ao aumentar a minha frame,ou diminuir o que esta pintado nao seja apagado. obrigado pela vossa ajuda. Link to comment Share on other sites More sharing options...
brunoais Posted April 2, 2012 at 09:14 AM Report Share #447006 Posted April 2, 2012 at 09:14 AM Incompleto e impercetível. Com um pedido de ajuda desses não vais ter resposta "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
bmaster26 Posted April 2, 2012 at 02:01 PM Author Report Share #447066 Posted April 2, 2012 at 02:01 PM pronto para ajudarem tenho aqui o meu codigo necessario para entenderem algo mais. public class JanelaPrincipal extends JFrame implements MouseListener, MouseMotionListener { int startMouseX; int startMouseY; int endMouseX; int endMouseY; public int figure; public int prevMouseX; public int prevMouseY; public int currentMouseX; public int currentMouseY; private final int PEN_OP = 0; private final int LINE_OP = 1; private final int RECT_OP = 2; private Panel painelBotoes; private Panel painelDesenho; private Panel painelEstado; //private boolean busyDrawing; private Button rectanguloButton; private Button penButton; private Button lineButton; private JLabel Cursor; private JLabel Area; private JLabel Largura; private JLabel Altura; private JLabel Scalex; private JLabel Scaley; private JTextField MouseStatus; private JTextField AreaStatus; private JTextField DimxStatus; private JTextField DimyStatus; private JTextField ScalexStatus; private JTextField ScaleyStatus; public JanelaPrincipal() { //super("projecto"); createWidgets(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MouseStatus.addActionListener(new textListener()); pack(); this.addComponentListener(new componenteListener()); painelDesenho.addMouseListener(this); painelDesenho.addMouseMotionListener(this); painelDesenho.setBackground(Color.WHITE); setVisible(true); setSize(300, 300); setLocationRelativeTo(null); //permite à janela abrir no centro do ecra } @Override public void mouseClicked(MouseEvent e) { //mouselistener ,quando se pressiona qualquer botao do rato e liberta-se sem arrastar switch (figure) { case PEN_OP: painelDesenho.getGraphics().drawLine(e.getX(), e.getY(), 0, 0); break; } } @Override public void mousePressed(MouseEvent e) { //mouselistener ,quando se fica a pressionar algum botao do rato System.out.println("as"); switch (figure) { case PEN_OP: painelDesenho.getGraphics().drawRect(e.getX(), e.getY(), 0, 0);//quando se pressiona o rato,no minimo desenha um pixel prevMouseX = e.getX();//saber o ponto inicial de X prevMouseY = e.getY();//saber o ponto inicial de y,quando se desloca o rato,unir os dois pontos(inicial e final) break; case LINE_OP: // painelDesenho.getGraphics().setXORMode(painelDesenho.getBackground()); // painelDesenho.getGraphics().drawRect(e.getX(), e.getY(), 0, 0); // //painelDesenho.getGraphics().drawRect(e.getX(), e.getY(), 0, 0); // prevMouseX = e.getX(); // prevMouseY = e.getY(); startMouseX = e.getX(); startMouseY = e.getY(); case RECT_OP: startMouseX = e.getX(); startMouseY = e.getY(); break; /* * case RECT_OP: painelDesenho.getGraphics().drawRect(e.getX(), * e.getY(), 0, 0); prevMouseX = e.getX(); prevMouseY = e.getY(); * break; */ } } @Override public void mouseReleased(MouseEvent e) { //mouselistener,quando exite a libertação do rato apos ter havido o pressionamento deste updateMouseCoordinates(e); switch (figure) { case LINE_OP: endMouseX = e.getX(); endMouseY = e.getY(); painelDesenho.getGraphics().drawLine(startMouseX, startMouseY, endMouseX, endMouseY); //painelDesenho.getGraphics().setXORMode(painelDesenho.getBackground()); //// painelDesenho.getGraphics().drawLine(e.getX(), e.getY(), e.getX(), e.getY());//para saber as coordenadas onde o rato é libertado //painelDesenho.getGraphics().setXORMode(painelDesenho.getBackground()); break; case RECT_OP: endMouseX = e.getX(); endMouseY = e.getY(); int sizex = endMouseX - startMouseX; int sizey = endMouseY - startMouseY; painelDesenho.getGraphics().drawRect(startMouseX, startMouseY, sizex, sizey); break; } } @Override public void mouseEntered(MouseEvent e) { //mouselistener, quando o mouse entra na area de um componente especifico updateMouseCoordinates(e); } @Override public void mouseExited(MouseEvent e) { //mouselistener,sai da area definida de um componente especifico updateMouseCoordinates(e); } @Override public void mouseDragged(MouseEvent e) { //mousemotionlistener ,quando é pressionado o botao do rato e seguidamento arrastado updateMouseCoordinates(e); switch (figure) //tem que ser com inteiros,nao pode ser strings { case PEN_OP: System.out.println("botao pen escolhido"); //setGraphicalDefaults(e); painelDesenho.getGraphics().drawLine(prevMouseX, prevMouseY, e.getX(), e.getY());//desenha uma linha,ou une o ponto inicial e um ponto final painelDesenho.getGraphics().drawRect(e.getX(), e.getY(), 0, 0);//o ultimo ponto desenhado é como se fosse um pixel System.out.println("esta a fazer a pen"); prevMouseX = e.getX();//obter as posiçoes finais desenhadas para serem as posiçoes inicias da uniao do proximo ponto prevMouseY = e.getY(); break; // case LINE_OP: // System.out.println("botao linha escolhido"); // painelDesenho.getGraphics().setXORMode(painelDesenho.getBackground()); // painelDesenho.getGraphics().drawLine(prevMouseX, prevMouseY, e.getX(), e.getY()); // System.out.println("eta a faxer a linha"); // break; } } @Override public void mouseMoved(MouseEvent e) { //mousemotionlistener,moveimento do mouse em um componente especifico updateMouseCoordinates(e); } /* * @Override public void actionPerformed(ActionEvent e) { String newx; * String newy; newx = DimxStatus.getText(); newy = DimyStatus.getText(); * Dimension dim = new Dimension(Integer.parseInt(newx), * Integer.parseInt(newy)); setPreferredSize(dim); pack(); } */ private class TrataBotoes implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if ("pen".equals(e.getActionCommand())) { System.out.println("botao pen pressionado"); figure = PEN_OP; } if ("line".equals(e.getActionCommand())) { System.out.println("botao linha pressionado"); figure = LINE_OP; } if ("rectangle".equals(e.getActionCommand())) { figure = RECT_OP; } } } private class textListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String newx = ""; String newy = ""; newx = DimxStatus.getText(); newy = DimyStatus.getText(); //setsize(newx,newy); Dimension dim = new Dimension(Integer.parseInt(newx), Integer.parseInt(newy)); setPreferredSize(dim); repaint(); pack(); //setsize(); //label.setText(j.getText()); //MouseStatus.selectAll(); } } private class componenteListener implements ComponentListener { @Override public void componentResized(ComponentEvent e) { System.out.println("resize"); Component c = (Component) e.getSource(); Dimension d = c.getSize(); repaint(); System.out.println("Size: " + d.width + "x" + d.height); DimxStatus.setText(String.valueOf(d.width)); DimyStatus.setText(String.valueOf(d.height)); } @Override public void componentMoved(ComponentEvent e) { System.out.println("moveu"); } @Override public void componentShown(ComponentEvent e) { System.out.println("show"); } @Override public void componentHidden(ComponentEvent e) { System.out.println("hidden"); } } public void updateMouseCoordinates(MouseEvent e) { String xCoor = ""; String yCoor = ""; String selectedText = ""; selectedText = MouseStatus.getText(); if (e.getX() < 0) { //se o rato estiver fora da frame xCoor = "0"; //é para meter 0 no xcor } else { xCoor = String.valueOf(e.getX());//se nao estiver fora,significa que esta dentro,logo é preciso obter as coordenadas } if (e.getY() < 0) { xCoor = "0"; } else { yCoor = String.valueOf(e.getY()); } MouseStatus.setText("x:" + xCoor + " y:" + yCoor); } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now