关于java的paint()方法
小弟我现在在JAVA里用图实现了一幅地图,然后现在想把它画出来:1,当用户输入1,用黑色画整个图2,当用户输入2,用红色画最小生成树,可恢复黑色3,当用户输入3,再输入两...
小弟我现在在JAVA里用图实现了一幅地图,然后现在想把它画出来:
1,当用户输入1,用黑色画整个图
2,当用户输入2,用红色画最小生成树,可恢复黑色
3,当用户输入3,再输入两个点,用绿色画出两点间最短路径,可恢复黑色
小弟刚接触GUI,不太懂关于paint()函数的问题,鉴于paint不是在main里执行的,所以当我用paint()画出整个地图,怎么再从这幅图上画最小生成树和最短路径(并在需要时恢复黑色)?也就是说,怎样让我的画图行为取决于用户输入?
谢谢各位大神了!
文字说明可看第一条回答我的追问。
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
public static void main(String[] args){
Test sl = new Test();
sl.update();
}
Test(){
super("Sample");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(600,600);
setVisible(true);
}
public void update(){
repaint();
}
public void paint(Graphics g) {
g.setColor(Color.black);
//有角矩形,起始点(10,30),宽80,高50
g.drawRect(10,30,80,50);
//圆角矩形,起始点(110,30),宽80,高50,角(a=20,b=10)
g.drawRoundRect(110,30,80,50,20,10);
//椭圆,圆心(110,90)、a=80,b=50
g.drawOval(110,90,80,50);
//一条弧,圆心(219,30)、a=80,b=50 角度在0-90之间
g.drawArc(210,30,80,50,0,90);
//扇面,圆心(219,90)、a=80,b=50 角度在0-90之间
g.fillArc(210,90,80,50,0,90);
}
} 展开
1,当用户输入1,用黑色画整个图
2,当用户输入2,用红色画最小生成树,可恢复黑色
3,当用户输入3,再输入两个点,用绿色画出两点间最短路径,可恢复黑色
小弟刚接触GUI,不太懂关于paint()函数的问题,鉴于paint不是在main里执行的,所以当我用paint()画出整个地图,怎么再从这幅图上画最小生成树和最短路径(并在需要时恢复黑色)?也就是说,怎样让我的画图行为取决于用户输入?
谢谢各位大神了!
文字说明可看第一条回答我的追问。
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
public static void main(String[] args){
Test sl = new Test();
sl.update();
}
Test(){
super("Sample");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(600,600);
setVisible(true);
}
public void update(){
repaint();
}
public void paint(Graphics g) {
g.setColor(Color.black);
//有角矩形,起始点(10,30),宽80,高50
g.drawRect(10,30,80,50);
//圆角矩形,起始点(110,30),宽80,高50,角(a=20,b=10)
g.drawRoundRect(110,30,80,50,20,10);
//椭圆,圆心(110,90)、a=80,b=50
g.drawOval(110,90,80,50);
//一条弧,圆心(219,30)、a=80,b=50 角度在0-90之间
g.drawArc(210,30,80,50,0,90);
//扇面,圆心(219,90)、a=80,b=50 角度在0-90之间
g.fillArc(210,90,80,50,0,90);
}
} 展开
2个回答
展开全部
呵呵 这个其实是很简单的,你在GUI中要捕捉键盘的输入就应该增加一个键盘的监听器。
public void addKeyListener(KeyListener l)利用这个方法捕捉。
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame implements addKeyListener {
int sign = 0;
public static void main(String[] args){
Test sl = new Test();
}
Test(){
addKeyListener(this);
...
}
public void paint(Graphics g) { //这里就要分情况绘制了
if(sign == 0){
}else if(sign == 1){}
}
void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_0){
sign = 0;
repaint();
}else if(e.getKeyCode() == KeyEvent.VK_0){
sign = 1;
repaint();
}
}
void keyReleased(KeyEvent e) {}
void keyTyped(KeyEvent e) {}
}
public void addKeyListener(KeyListener l)利用这个方法捕捉。
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame implements addKeyListener {
int sign = 0;
public static void main(String[] args){
Test sl = new Test();
}
Test(){
addKeyListener(this);
...
}
public void paint(Graphics g) { //这里就要分情况绘制了
if(sign == 0){
}else if(sign == 1){}
}
void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_0){
sign = 0;
repaint();
}else if(e.getKeyCode() == KeyEvent.VK_0){
sign = 1;
repaint();
}
}
void keyReleased(KeyEvent e) {}
void keyTyped(KeyEvent e) {}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询