рисование в Java

psilocybe

только не убивайте. не получается нарисовать линию не jPanel1. что надо дописать?
 
public void paintComponents(Graphics g) {
super.paintComponents(g);
g.drawLine(0,0,200,200);
}
public void jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("done");
jPanel1.paint(paintComponents(g;
//paintComp pC = new paintComp;;
//super.paint(g);
}

psilocybe

то что здесь херня написана не надо говорить я и сам знаю

psilocybe

вопрос такой: надо при нажатии на кнопку получать на jPanel1 линию, например.
текст у jLabel1 меняется, а вот как дальше - хз..

rosali

Пока у тебя написано рисовать линию по _форме_ а сверху прикрыть форму панелью, поэтому ничего и не видно. Вообще paint вызывать самому не надо, его вызывает оконный менеджер. Вместо этого надо изменять состояние оконного объекта, так чтобы paint начинал работать по-другому, и потом вызывать invalidate. Я в Яве ничего не понимаю, это просто мои общие представления о GUI. Прочитай какую-нибудь книгу.

maslyan

можно так:

public void paintComponents(Graphics g) {
super.paintComponents(g);
}
public void jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("done");
repaint;
Graphics g = getGraphics;
g.drawLine(0,0,200,200);
}

и так:

private boolean pushed = false;
public void paintComponents(Graphics g) {
super.paintComponents(g);
if (pushed) g.drawLine(0,0,200,200);
}
public void jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("done");
pushed = (!pushed);
repaint;
}

правда, в обоих случаях рисоваться будет в самом окне. чтобы нарисовать в панели, нужно создать класс и переопределить в нем paintComponents(Graphics g).
(оба примера не были откомпилированы.)
Оставить комментарий
Имя или ник:
Комментарий: