рисование линии между каждыми двумя точками в списке соответственно

Привет, я работаю с netbeans. Я написал код, который имеет два класса (1) Demo (2) mainFrame which extends javax.swing.JFrame

сначала будет запущен мой mainFrame и он покажет панель, на которой вы можете поставить несколько точек, а затем, когда вы нажмете кнопку; размер всех точек будет храниться в списке, затем я отправлю этот список Demo class, потому что мне нужно расположить точки в таком порядке, чтобы вы могли провести линию между каждыми двумя точками соответственно. У меня тут две проблемы:

  1. У меня есть этот list <listOfPoints>, как я могу отправить этот список в класс mainFrame для рисования линий, не создавая новый объект класса mainFrame?

  2. Я должен работать с методом краски? пожалуйста, помогите мне с примером кода в java (с netbeans)

    Всего:

    I have a lot of points' dimension in my list ,I want to traverse my list in the i.e., paint method and draw line between each pi and pi+1.how can I do this?
    

Благодарность


person user472221    schedule 19.11.2010    source источник


Ответы (2)


Google: netbeans java drawline

первый ответ

поиск

Graphics gg = buffImg.createGraphics();
        gg.setColor(Color.MAGENTA);
        gg.drawLine(10,10,buffImg.getWidth()-buffImg.getWidth()/10,

http://wws2.uncc.edu/tpw/tpwJavaNtebeansTutorial/index.html

относительно вашего вопроса о составлении списка точек

void drawList(Graphics gg, List points){
   MyPointClass prev p = null;
   for(MyPointClass p : points){
       if(prevp != null){
           gg.drawLine(prevp.x, prevp.y, p.x, p.y);
       }
       prev = p;
    }
}

И если вам не хочется передавать объект из одного кадра в другой статический мужской drawList, тогда вы можете сделать MyClassContainingDrawLineMethod.drawList(gg, points);

person Jason Rogers    schedule 19.11.2010
comment
В моем списке много точек, я хочу пройтись по списку, т. е. методом рисования, и провести линию между каждым пи и пи + 1. Как я могу это сделать? Благодарность - person user472221; 19.11.2010
comment
проверить редактирование (я на самом деле перечитал ваш пост после публикации и отредактировал его, чтобы добавить цикл, - person Jason Rogers; 19.11.2010
comment
спасибо, а что мне писать вместо gg в моем демо-классе, когда я вызываю в нем этот метод? - person user472221; 19.11.2010
comment
gg — это графический компонент, который позволяет вам рисовать. Я предлагаю вам пройти учебник, на который я дал ссылку в своем ответе, если вы не знаете, как справиться с рисованием. - person Jason Rogers; 19.11.2010
comment
Я получаю все, но, например, у меня есть JFrame, на котором есть панель. Что мне делать в этой ситуации? jframe - это мой контейнер или jpanel? - person user472221; 19.11.2010
comment
на вашей панели у вас нет публичного метода рисования пустоты (Graphics g), который вы можете переопределить? (извините, я только недавно использовал Android, поэтому я не могу четко вспомнить) - person Jason Rogers; 19.11.2010
comment
JPanel — это то место, где вы хотите рисовать. Вам нужно расширить панель и переопределить ее метод paintComponent(). Когда вы переопределяете его, это будет что-то вроде paintComponent(Graphics gg). В данном случае gg — это имя переменной, в которой вы держите ссылку на графический объект, вы можете поместить туда все, что захотите. - person Cesar; 19.11.2010

Имеет ли значение, что вы используете Netbeans?

Кроме того, чтобы ответить:

Я думаю, что с Swing вы обычно переопределяете метод paintComponent(Graphics gg), чтобы описать, как вы хотите, чтобы ваша панель/кадр рисовалась. И вызовите repaint(), когда вы хотите, чтобы ваша программа фактически перерисовала себя.

Вы можете прочитать это руководство здесь: http://download.oracle.com/javase/tutorial/uiswing/ Особенно в разделе «Выполнение пользовательского рисования».

Кроме того, просмотрите соответствующие части API Swing и AWT.

Вы можете рисовать линии, используя метод drawLine() графического класса. Или с помощью класса Line (Line2D.Double и т. д.) для представления ваших линий, а затем перейти к graphicsObject.draw(line) и т. д.

Что вы могли бы сделать, так это добавить точки в список, когда вы добавляете их на графическую панель (перерисовывая каждый раз, когда вы добавляете их), а затем, когда кнопка нажата, вы могли бы запустить метод для обработки вашего списка в кнопке actionListener. Что-то вроде: list = demo.processList(list). Где processList имеет заголовок, например: public List processList (List toProcess).

person user307666    schedule 19.11.2010
comment
согласился, что это даже не связано с использованием netbeans, но все же я опубликовал руководство по использованию netbeans, чтобы сделать его проще ^^ - person Jason Rogers; 19.11.2010