import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CirclePanel extends JPanel {
private JTextField xField, yField, diameterField;
private JButton Redraw;
private JLabel xLabel, yLabel, rLabel;
Circle myCircle = new Circle (150, 150, 30, Color.red, Color.white);
Graphics g;
//Paint objects on panel
public void paintComponent (Graphics page) {
super.paintComponent(page);
g = page;
myCircle.draw(g);
}
public CirclePanel(){
xLabel = new JLabel("X= ");
yLabel = new JLabel("Y= ");
rLabel = new JLabel("R= ");
xField = new JTextField(5);
xField.addActionListener(new TempListener());
yField = new JTextField(5);
yField.addActionListener(new TempListener());
diameterField = new JTextField(5);
diameterField.addActionListener(new TempListener());
Redraw = new JButton("Redraw!");
Redraw.addActionListener(new ButtonListener());
add(xLabel);
add(xField);
add(yLabel);
add(yField);
add(rLabel);
add(diameterField);
add(Redraw);
setPreferredSize(new Dimension(500, 500));
setBackground(Color.white);
}
private class ButtonListener implements ActionListener{
public void actionPerformed (ActionEvent event) {
//Update page
myCircle.draw(g);
//repaint panel
repaint();
}
private class TempListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
int x, y, newbase, newhei;
String text = xField.getText();
String text2 = yField.getText();
x = Integer.parseInt (text);
y = Integer.parseInt (text2);
myCircle.draw(g);
repaint();
}
}
}
}
嗨,大家好,我正在做的Java應用程序,繪製一個圓圈,並用JTextField中的新值重新繪製它。我爲它寫了三堂課。其中之一是包含訪問器,增變器,構造函數。其中一個課程具有課程的主要方法,其中一個課程在上面。但TempListener不起作用。你可以幫我嗎?Java不能讓TempListener工作
請說明您的問題,因爲如果我們不知道你想做什麼。你說「TempListener不工作」,但它應該做什麼?你似乎認爲我們已經讀完了你的整個任務並且能夠閱讀頭腦。我們不能。 – 2015-04-01 16:15:49
請勿在班級中使用圖形字段。僅在paintComponent中使用本地Graphics對象。換句話說,除掉你的'g'變量,你的TempListener ActionListener不應該調用任何關閉g的方法,甚至不應該看到一個Graphics對象。它應該只是改變變量狀態並調用repaint。閱讀更多的圖形教程。 [課程:執行自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html)。 – 2015-04-01 16:17:05