Сначала я написал этот класс DrawOval.java следующим образом: -Рисунок овального использования drawOval() метод
public class DrawOval extends JPanel{
private int diameter = 10;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillOval(10,10,diameter,diameter);
}
public void setDiameter(int newD){
diameter = (newD>=0 ? newD : 10);
repaint();
}
public Dimension getPreferredSize(){
return new Dimension(200,200);
}
public Dimension getMinimumSize(){
return getPreferredSize();
}
}
тогда я написал этот класс TheWindow.java следующим образом: -
public class TheWindow extends JFrame{
private DrawOval myPanel;
public TheWindow(){
super("The title");
myPanel = new DrawOval();
myPanel.setBackground(Color.GREEN);
add(myPanel,BorderLayout.CENTER);
}
}
В Наконец-то я написал главный класс следующим образом: -
public class Test{
public static void main(String[] args){
TheWindow w = new TheWindow();
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
w.setSize(300,300);
w.setVisible(true);
}
}
и выход только кадр с зеленым фоном без каких-либо овала?
Просьба уточнить: слияние, что с paintComponent? –
Я имею в виду, что вы должны поместить код метода setDiameter в paintComponent. Вам не нужен отдельный метод для этой задачи. Таким образом, вам не потребуется вызывать этот метод. Я отредактирую свой ответ, чтобы понять, что я имею в виду. –
Лучше дать диаметр значение по умолчанию, и никогда, я не повторяю ** никогда ** называть 'repaint()' внутри метода 'paint (Graphics g)' или 'paintComponent (Graphics g)'. Когда-либо. Это рискует потенциальной рекурсией и/или плохими побочными эффектами. Просто не делайте этого или не рекомендуйте это. –