2013-04-01 2 views
1

Итак, я работаю над кодом для Java-проекта с партнером, но когда он отправил мне свой код, ничего не получилось. Я расширяю этот вопрос ко всем вещам, связанным с передачей кода из двух разных сред Eclipse. Я уверен, что мы оба работаем с 1.6.Передача кода с двух машин

Предполагается, что сама программа откроет JFrame с черным фоном с тремя кнопками сверху (загрузите, прочитайте, очистите) и создайте прямые линии на основе щелчков, закрывая фигуру при щелчке правой кнопкой мыши. Это хорошо работает на его Mac, но не на моем. Мы оба используем Eclipse. (Я также тестировал на Dr. Java).

Мы новички так нежны :)

ВОТ ПРОБЛЕМА:

После того как он компилирует и щелкает несколько раз: (Я не могу загрузить фотографии без повторения 10) http://i49.tinypic.com/nwwsqf.jpg После I компиляция: http://i50.tinypic.com/2lxdkyg.png

Спасибо за помощь. Надеюсь, это тоже поможет другим.

Вот код:

import java.awt.BorderLayout; 
    import java.awt.Color; 
    import java.awt.Graphics; 
    import java.awt.Image; 
    import java.awt.Point; 
    import java.awt.Rectangle; 
    import java.awt.Shape; 
    import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.geom.GeneralPath; 
import java.awt.image.ImageObserver; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintStream; 
import java.text.AttributedCharacterIterator; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 

public class PolygonMaker extends JFrame { 

    private List<Polygon> polygonList = new ArrayList<Polygon>(); 
    public Polygon polygonInProgress = new Polygon(); 
    JPanel drwaingPanel; 
    JPanel buttonsPanel; 

    public PolygonMaker() { 
     polygonList.add(polygonInProgress); 
    } 

    public static void main(String srg[]) { 

     new PolygonMaker().generateDrwaingArea(); 

    } 

    public void generateDrwaingArea() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(this); 
     setLayout(new BorderLayout()); 
     setSize(500, 500); 
     setResizable(false); 
     setLocation(400, 300); 
     setTitle("Polygon Maker"); 
     setVisible(true); 
     addMouseListener(new MouseListener() { 

      @Override 
      public void mouseReleased(MouseEvent e) { 
       // TODO Auto-generated method stub 

       if (e.getButton() == MouseEvent.BUTTON1) { 
        polygonInProgress.add(new Point(e.getX(), e.getY())); 
        System.out.println("clicked"); 
       } else if (e.getButton() == MouseEvent.BUTTON3) { 
        boolean fill = e.isShiftDown(); 
        System.out.println("shift pressed"); 
        if (polygonInProgress.size() > 2) { 
         recordPolygon(fill); 
         polygonInProgress = new Polygon(); 
         polygonList.add(polygonInProgress); 
        } 
       } 
       repaint(); 
      } 

      @Override 
      public void mousePressed(MouseEvent e) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void mouseExited(MouseEvent e) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void mouseEntered(MouseEvent e) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void mouseClicked(MouseEvent e) { 
       // TODO Auto-generated method stub 

      } 
     }); 

     buttonsPanel = createButtonsPanel(); 

     drwaingPanel = new JPanel(); 
     drwaingPanel.setBackground(Color.black); 

     add(buttonsPanel, BorderLayout.NORTH); 
     add(drwaingPanel, BorderLayout.CENTER); 
    } 

    public JPanel createButtonsPanel() { 
     JButton loadData = new JButton("Load Data"); 
     JButton clear = new JButton("Clear"); 
     loadData.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 

       File poly = new File(
         "C:\\Users\\Raghav\\Desktop\\poly.dat"); 
       try { 
        Scanner scanner = new Scanner(poly); 
        Object options[] = { "Ok", "Cancel" }; 
        int selection = JOptionPane 
          .showOptionDialog(
            new JFrame(), 
            "Loading File overides current data .Continue loading?", 
            "Loading File overides current data .Continue loading?", 
            JOptionPane.OK_CANCEL_OPTION, 
            JOptionPane.INFORMATION_MESSAGE, null, 
            options, options[1]); 

        if (selection == JOptionPane.OK_OPTION) { 
         remove(drwaingPanel);      
         remove(buttonsPanel); 
         drwaingPanel = new JPanel(); 
         drwaingPanel.setBackground(Color.black);       
         buttonsPanel = createButtonsPanel(); 
         add(drwaingPanel, BorderLayout.CENTER);      
         add(buttonsPanel, BorderLayout.NORTH); 
         validate(); 
         polygonList = new ArrayList<Polygon>(); 
         while (scanner.hasNextLine()) { 

          String line = scanner.nextLine(); 
          Polygon polygon = new Polygon(); 
          int numberOfPoints = Integer.parseInt(line 
            .substring(0, line.indexOf(32))); 
          line = line.substring(line.indexOf(32) + 1); 
          String fillStatus = line.substring(0, 
            line.indexOf(32)); 
          System.out.println(fillStatus); 
          if (fillStatus.equals("false")) 
           polygon.setFillStatus(false); 
          else if (fillStatus.equals("true")) 
           polygon.setFillStatus(true); 
          line = line.substring(line.indexOf(32) + 1); 
          String isCompleted = line.substring(0, 
            line.indexOf(32)); 
          System.out.println(isCompleted); 
          if (isCompleted.equals("false")) 
           polygon.setFillStatus(false); 
          else if (isCompleted.equals("true")) 
           polygon.setFinished(true); 
          line = line.substring(line.indexOf(32) + 1); 
          String redValue = line.substring(0, 
            line.indexOf(32)); 
          System.out.println(redValue); 
          line = line.substring(line.indexOf(32) + 1); 
          String greenValue = line.substring(0, 
            line.indexOf(32)); 
          System.out.println(greenValue); 
          line = line.substring(line.indexOf(32) + 1); 
          String yellowValue = line.substring(0, 
            line.length()); 
          System.out.println(yellowValue); 

          polygon.color = new Color(Integer 
            .parseInt(redValue), Integer 
            .parseInt(greenValue), Integer 
            .parseInt(yellowValue)); 

          for (int i = 0; i < numberOfPoints; i++) { 
           line = scanner.nextLine(); 
           int x = Integer.parseInt(line.substring(0, 
             line.indexOf(32))); 
           line = line.substring(line.indexOf(32) + 1); 
           int y = Integer.parseInt(line.substring(0, 
             line.length())); 
           polygon.add(new Point(x, y)); 
          } 

          polygonList.add(polygon); 


         } 


         polygonInProgress= new Polygon(); 
         polygonList.add(polygonInProgress); 

         validate(); 



        } 

       } catch (FileNotFoundException e1) { 
        // TODO Auto-generated catch block 
        JOptionPane.showMessageDialog(new JFrame(), 
          "Cannot find poly.dat"); 
       } 

       validate(); 


      } 
     }); 
     JButton saveData = new JButton("Save Data"); 
     saveData.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       File poly = new File("C:\\Users\\Raghav\\Desktop\\poly.dat"); 

       try { 
        BufferedWriter bufferedWriter = new BufferedWriter(
          new FileWriter(poly)); 
        for (Polygon polygon : polygonList) { 
         try { 

          bufferedWriter.write(polygon.size() + " " 
            + polygon.isFilled() + " " 
            + polygon.isFinished() + " " 
            + polygon.color.getRed() + " " 
            + polygon.color.getGreen() + " " 
            + polygon.color.getBlue()); 
          bufferedWriter.newLine(); 

          for (int i = 0; i < polygon.size(); i++) { 
           bufferedWriter 
             .write(polygon.getPoints().get(i).x 
               + " " 
               + polygon.getPoints().get(i).y); 
           bufferedWriter.newLine(); 
          } 

         } catch (IOException e1) { 
          // TODO Auto-generated catch block 
          e1.printStackTrace(); 
         } 
        } 
        bufferedWriter.close(); 
       } catch (FileNotFoundException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } catch (IOException e2) { 
        // TODO Auto-generated catch block 
        e2.printStackTrace(); 
       } 

      } 
     }); 

     clear.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println("clear called"); 
       remove(drwaingPanel); 
       drwaingPanel = new JPanel(); 
       drwaingPanel.setBackground(Color.black); 
       add(drwaingPanel, BorderLayout.CENTER); 
       remove(buttonsPanel); 
       buttonsPanel = createButtonsPanel(); 
       add(buttonsPanel, BorderLayout.NORTH); 
       validate(); 
       polygonList = new ArrayList<Polygon>(); 
       polygonInProgress = new Polygon(); 
       polygonList.add(polygonInProgress); 

      } 
     }); 

     JPanel buttonsPanel = new JPanel(); 
     buttonsPanel.setBackground(Color.black); 
     buttonsPanel.add(loadData); 
     buttonsPanel.add(saveData); 
     buttonsPanel.add(clear); 


     return buttonsPanel; 

    } 

    public void paint(Graphics g) { 
     for (Polygon polygon : polygonList) 
      polygon.paintComponent(g); 
    } 

    private void recordPolygon(boolean fill) { 
     // TODO Auto-generated method stub 

     polygonInProgress.setFillStatus(fill); 
     polygonInProgress.setFinished(true); 
     remove(buttonsPanel); 
     remove(drwaingPanel); 
     drwaingPanel = new JPanel(); 
     drwaingPanel.setBackground(Color.black); 
     buttonsPanel = createButtonsPanel(); 
     add(drwaingPanel, BorderLayout.CENTER); 
     add(buttonsPanel, BorderLayout.NORTH); 
     validate(); 
     repaint(); 

     // polygonList.add(polygonInProgress); 
     JOptionPane.showMessageDialog(this, "New " + polygonInProgress.size() 
       + "-gon recorded \n " + (polygonList.size()) 
       + " polygons in all"); 

    } 

} 

и ...

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Paint; 
import java.awt.Point; 
import java.io.PrintStream; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Random; 
import java.util.Scanner; 

public class Polygon { 

    static final int POINT_SIZE = 0; 
    static Random rnd = new Random(); 
    private List<Point> points = new ArrayList<Point>(); 
    public Color color = new Color(rnd.nextInt(255), rnd.nextInt(255), 
      rnd.nextInt(255)); 
    private boolean isFilled = false; 
    private boolean isFinished = false; 
    private Point lastPointOfPloygon; 

    public Polygon() { 

    } 

    public void write(PrintStream ps) { 

    } 

    public void read(Scanner scanner) { 

    } 

    public boolean isFinished() { 
     return isFinished; 

    } 

    public boolean isFilled() { 
     return isFilled; 

    } 

    public List<Point> getPoints() { 
     return points; 
    } 

    public void setFilled(boolean isFilled) { 
     this.isFilled = isFilled; 
    } 

    public void setFillStatus(boolean status) { 
     isFilled = status; 
    } 

    public void paintComponent(Graphics g) { 
     System.out.println("paint commponebt calles"); 
     g.setColor(color); 
     for (int i = 0; i < points.size(); i++) { 

      if (i == points.size() - 1) { 
       System.out.println("last point"); 
       if (isFinished == true) { 
        System.out.println(isFinished + "connect"); 
        if (isFilled == true) 
        g.fillOval(points.get(i).x, points.get(i).y, 5, 5); 
        g.drawLine(points.get(i).x, points.get(i).y, 
          points.get(0).x, points.get(0).y); 
       } 
      } else { 
       if (isFilled == true) 
        g.fillOval(points.get(i).x, points.get(i).y, 5, 5); 
        g.drawLine(points.get(i).x, points.get(i).y, 
          points.get(i + 1).x, points.get(i + 1).y); 

      } 
     } 
    } 

    public int size() { 
     return points.size(); 
    } 

    public void add(Point point) { 
     points.add(point); 

    } 

    public void setFinished(Boolean finishedValue) { 
     isFinished = finishedValue; 
    } 

    @Override 
    public String toString() { 
     return null; 

    } 
} 
+2

Каков ваш вопрос? –

+0

duplicate: http://stackoverflow.com/questions/15735493/using-swing-java-to-make-program – knowbody

+0

«Сама программа должна открыть JFrame с черным фоном с тремя кнопками сверху (Load, Read , очистить) и сделать прямые линии на основе кликов, закрывая форму при щелчке правой кнопкой мыши. Он работает и работает на его Mac, но не на моем. Мы оба используем Eclipse (я также тестировал на Dr. Java) ». – ShanaBoo

ответ

3

Есть несколько причин, это, возможно, не работали:

  1. Код (предполагается, что он работает для вашего партнера), возможно, не признают часть импорта. Когда вы вводите eclipse, он импортирует импорт, который вам нужен по мере ввода, даже если вы его повторно импортируете, он может не видеть, где это необходимо, если это проблема, попробуйте навести курсор на код, обозначенный красным, и выберите исправление ,
  2. Он/она может импортировать и/или ссылаться на то, что у вас нет. Это может быть из-за версии или дополнения от вас, а другая нет, просто попросите его решить эту проблему.
  3. Чтобы передать код Java (с помощью eclipse), я лично копирую всю смену рабочего пространства, которую я назначил ей, а не только код сам, это также гарантирует, что у них есть все зависимые файлы (например, изображения или звуковые файлы, если это было игра).
  4. Если вы используете разные версии Mac OS, это также может повлиять на код Java, но это маловероятно. Я стараюсь использовать Windows или Linux при программировании, поэтому я не знаю всех незначительных различий, которые могут быть с версиями Mac ,

Если у вас есть сервер обмена файлами, рабочая станция или какой-либо другой способ писать код, вы можете попробовать импортировать свой проект, чтобы этот вопрос не повторялся снова. Его приятно видеть новых программистов, поддерживать его и никогда не бояться задавать вопросы, которые все на этом сайте более чем рады помочь! Удачи вам в вашем проекте :)

+0

Ну, как вы можете видеть из комментариев выше, его основная проблема - задавать вопросы, когда я знаю, что на меня нападут люди, которые считают, что они контролируют сайт. Спасибо за помощь tho – ShanaBoo

+1

Не позволяйте им отключать вас от этого сайта, большинство из них очень хотят помочь, также я верю, что Кевин Сэдлер сказал, что причиной вашей проблемы в этом конкретном коде может стать. Снова удача вашему и вашему партнеру! –

0

Ну ... не вопрос ... Но если вы ищете советы по редактированию кода между двумя людьми, я рекомендую использовать терминал и vim, которые могут быть ssh'd.

1

Один разность потенциалов в вашем коде и вашего партнера на MacOS должно быть то, что вы указываете путь к файлу в двух местах в коде:

C: \ Users \ Raghav \ Desktop \ поли.dat

Если есть проблемы с записью файла, произойдет Исключение. То же имя файла используется дважды в коде, и даже если это «тест-код», было бы хорошей идеей, чтобы сразу указать имя файла:

static final String DATA_FILE = "C:\\Users\\Raghav\\Desktop\\poly.dat"; 

и обратитесь к data_file в коде.

Возможно, проблема не в этом, к сожалению, ваш вопрос довольно смутен в характере проблемы, вы говорите «ничего не работает» или «хорошо работает на своем Mac, но не на моем». Это то, о чем спрашивают Кодекс-Гуру и кто-то, кто знает. Если бы вы могли подробнее остановиться на проблеме, мы могли бы дать лучший ответ. Например: программа не запускается? Сбой программы с исключением и каково исключение? Не работает ли программа так, как ожидалось (что она делает, что она должна делать)?

+0

Эй, @kevin, я загрузил фотографии проблемы! – ShanaBoo

+0

Кто использует Mac и кто использует ПК? Проблема в том, что диалог из записиPolygon() не отображается? –

+0

Все это не отображается. Он на ПК, и я нахожусь на Mac. Я думал, что мы оба Мак, но я ошибся. recordPolygon() не отображается, а также все кнопки. – ShanaBoo

Смежные вопросы