0
我剛剛開始使用JAVA,我試圖用輸入來繪製圖像。 當我給出一個新值並點擊按鈕「draw」時,我希望面板「刷新/重新加載」。 我嘗試了所有不同的方式removeALL();重繪();一個revalidate();在不同的地方。rapaint();繪製後立即重繪
with removeAll();窗戶凍結。 with only repaint();並重新驗證();圖像只停留一秒鐘。
我希望圖像保持,直到一個新的值得到充分和按鈕被點擊。 放下她是代碼的一部分。 謝謝。
public void actionPerformed (ActionEvent event) {
Graphics paper = panel.getGraphics();
String input = field.getText();
String input2 =field2.getText();
int x = Integer.parseInt(input);
int y = Integer.parseInt(input2);
paper.setColor(Color.red);
paper.fillOval(x, y, 50, 50);
paper.setColor(Color.blue);
paper.fillOval((x+100), y, 35, 35);
paper.setColor(Color.blue);
paper.fillOval(x, (y+100), 35, 35);
paper.setColor(Color.black);
paper.drawLine((x+49), (y+25), (x+102), (y+20));
paper.setColor(Color.black);
paper.drawLine((x+25), (y+49), (x+20), (y+102));
//removeAll();
//revalidate();
//repaint();
}
我嘗試在不同的功能:
public void actionPerformed (ActionEvent event) {
Graphics paper = panel.getGraphics();
function(paper);
repaint();
revalidate();
}
public void function (Graphics paper){
.... }
沒有工作..
通常情況下,你應該重新定義:'公共無效漆(圖形G){...}'只有調用'重繪();'在'的actionPerformed(...)' – Servuc
覆蓋paintComponent()並使用作爲參數傳遞的Graphics對象,而不是嘗試在ActionListener內繪製。 – WillShackleford
如果要離線準備圖像,請將其繪製到BufferedImage,然後在面板的[繪圖(圖形)]中繪製該圖像(http://docs.oracle.com/javase/7/docs/api/javax/ swing/JComponent.html#paint(java.awt.Graphics))方法。 – BeyelerStudios