Вы можете использовать такой код:
char *MyFunction(some arguments...)
{
char *pointer = malloc(size for the new array);
if (!pointer)
An error occurred, abort or do something about the error.
return pointer; // Return address of memory to the caller.
}
Когда вы это сделаете, память должна быть освобождена позже, передав адрес бесплатно.
Есть другие варианты , Подпрограмма может возвращать указатель на массив (или часть массива), который является частью некоторой существующей структуры. Вызывающий может передать массив, и программа просто записывает в массив, а не выделяет пространство для нового массива.
Измените свой mouseClick(...)
на:
int x, y;
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
Переопределить paint(...)
:
@Override
public void paint(Graphics g) {
drawCircle(x, y);
}
Когда вы вызываете repaint()
, компонент снова окрашивается с нуля . Ты кружк уничтожен. Вы захотите переопределить paintComponent(Graphics)
, который вызывается каждый раз, когда компонент окрашивается.
JFrame
и другие TLC не имеют метода paintComponent(Graphics)
. OTOH лучше not переопределить paint(Graphics)
в TLC, но вместо этого использовать JComponent
или JPanel
- который имеет метод paintComponent(Graphics)
.
– Andrew Thompson
9 November 2011 в 12:33