drawRect()的小问题! startPoint.x=endPoint.x-startPoint.x;endPoint.y-startPoint.y=startPoint.y 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 沒有問題吧是不是因為有endPoint.x<startPoint.x這樣的情況 首先:调试程序是否运行到该case里其次:看看两个点的坐标有没有问题 全部程序在这里了!------------import java.applet.*;import java.awt.*;import java.awt.event.*;public class MyApplet extends Applet implements MouseListener,MouseMotionListener,ActionListener{ private Point startPoint,endPoint; private final int line=1; private final int rectangle=2; private final int circle=3; private int shape=0; private boolean blClear=false; private CheckboxGroup groupTypes,groupColors,groupFill; private Checkbox typeLine,typeRectangle,typeCircle; private Checkbox colorRed,colorGreen,colorBlue,colorPink,colorYellow; private Checkbox fill,notfill; private Button btnClear; public MyApplet(){ super();} public void init(){ addMouseListener(this); addMouseMotionListener(this); btnClear=new Button("Clear"); groupTypes=new CheckboxGroup(); groupColors=new CheckboxGroup(); groupFill=new CheckboxGroup(); typeLine=new Checkbox("Line"); typeRectangle=new Checkbox("Recangle"); typeCircle=new Checkbox("Circle"); typeLine.setCheckboxGroup(groupTypes); typeRectangle.setCheckboxGroup(groupTypes); typeCircle.setCheckboxGroup(groupTypes); colorRed=new Checkbox("Red"); colorGreen=new Checkbox("Green"); colorBlue=new Checkbox("Blue"); colorPink=new Checkbox("Pink"); colorYellow=new Checkbox("Yellow"); colorRed.setCheckboxGroup(groupColors); colorGreen.setCheckboxGroup(groupColors); colorBlue.setCheckboxGroup(groupColors); colorPink.setCheckboxGroup(groupColors); colorYellow.setCheckboxGroup(groupColors); fill=new Checkbox("Fill"); notfill=new Checkbox("Not fill"); fill.setCheckboxGroup(groupFill); notfill.setCheckboxGroup(groupFill); groupTypes.setSelectedCheckbox(typeLine); groupTypes.setSelectedCheckbox(colorBlue); groupTypes.setSelectedCheckbox(notfill); typeLine.addMouseListener(this); typeRectangle.addMouseListener(this); typeCircle.addMouseListener(this); btnClear.addActionListener(this); colorRed.addMouseListener(this); colorGreen.addMouseListener(this); colorPink.addMouseListener(this); colorYellow.addMouseListener(this); fill.addMouseListener(this); add(typeLine); add(typeRectangle); add(typeCircle); add(btnClear); add(fill); add(notfill); add(colorRed); add(colorGreen); add(colorBlue); add(colorPink); add(colorYellow); } public void paint(Graphics g){ g.setColor(getCurrentColor()); int currentType=getCurrentType(); if(startPoint!=null && endPoint!=null && blClear==false){ switch(currentType){ case line: g.drawLine(startPoint.x,startPoint.y,endPoint.x,endPoint.y) ; break; case rectangle: checkPoints(); if (!getFillStatus()){ g.drawRect(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y); } else{ g.fillRect(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y); } break; case circle: checkPoints(); if(!getFillStatus()){ g.drawArc(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y,0,360); } else{ g.fillArc(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y,0,360); } break; } } blClear=false; } private void checkPoints(){ Point temp; if(startPoint.x>endPoint.x){ temp=startPoint; startPoint=endPoint; endPoint=temp; temp=null; } }private Color getCurrentColor(){ Color currentColor=Color.blue; Checkbox selectedColor=groupColors.getSelectedCheckbox(); if(selectedColor!=null){ String lblColor=selectedColor.getLabel(); if(lblColor.equals("Red")){ currentColor=Color.red; } else if(lblColor.equals("Green")){ currentColor=Color.green; } else if(lblColor.equals("Blue")){ currentColor=Color.blue; } else if(lblColor.equals("Pink")){ currentColor=Color.pink; } else if(lblColor.equals("Yellow")){ currentColor=Color.yellow; } } return currentColor; } public boolean getFillStatus(){ boolean blFill=false; Checkbox selectedFill=groupFill.getSelectedCheckbox(); if(selectedFill!=null){ String lblColor=selectedFill.getLabel(); if(lblColor.equals("Fill")){ blFill=true; } } return blFill; } private int getCurrentType(){ int currentType=line; Checkbox selectedType=groupTypes.getSelectedCheckbox(); if(selectedType!=null){ String lblType=selectedType.getLabel(); if(lblType.equals("Line")){ currentType=line; } else if(lblType.equals("Circle")){ currentType=circle; } else{ currentType=line; } } return currentType; } public void mousePressed(MouseEvent e){ startPoint=e.getPoint(); } public void mouseReleased(MouseEvent e){ endPoint=e.getPoint(); paint(this.getGraphics()); } public void mouseClicked(MouseEvent e){ } public void mouseDragged(MouseEvent e){ } public void mouseMoved(MouseEvent e) { } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void actionPerformed(ActionEvent e){ blClear=true; repaint(); }} if(lblType.equals("Line")){ currentType=line; } else if(lblType.equals("Circle")){ currentType=circle; } else{ currentType=line; } } return currentType; }這一段里,你並沒有返回rectangle是不是 else{ currentType=line; }要改為 else{ currentType=rectangle; } 一个弱弱的小功能,在线等 java swing和jdbc问题 一個關於JDBC的問題 jdk1.6 中,&和&&有什么区别。 对Thinking in Java中解释的 toString()方法自动调用的疑惑 java好难学,小女子又遇到难题了,看不懂啦,各位大哥哥帮帮我呀,谢了 java 怎么能成为exe文件 汉字与字母的区分? tomcat的ssl问题,求救!!! 一打开包括APPLET的网页,游览器就会报“非法操作”,我用的是WIN98,请问会是什么问题。提示如下》 如何才能简单导入文档? 如何实现多行工具栏?
是不是因為有endPoint.x<startPoint.x這樣的情況
其次:看看两个点的坐标有没有问题
------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MyApplet extends Applet implements MouseListener,MouseMotionListener,ActionListener{ private Point startPoint,endPoint;
private final int line=1;
private final int rectangle=2;
private final int circle=3; private int shape=0;
private boolean blClear=false; private CheckboxGroup groupTypes,groupColors,groupFill;
private Checkbox typeLine,typeRectangle,typeCircle;
private Checkbox colorRed,colorGreen,colorBlue,colorPink,colorYellow;
private Checkbox fill,notfill; private Button btnClear; public MyApplet()
{
super();
}
public void init(){
addMouseListener(this);
addMouseMotionListener(this); btnClear=new Button("Clear"); groupTypes=new CheckboxGroup();
groupColors=new CheckboxGroup();
groupFill=new CheckboxGroup(); typeLine=new Checkbox("Line");
typeRectangle=new Checkbox("Recangle");
typeCircle=new Checkbox("Circle");
typeLine.setCheckboxGroup(groupTypes);
typeRectangle.setCheckboxGroup(groupTypes);
typeCircle.setCheckboxGroup(groupTypes); colorRed=new Checkbox("Red");
colorGreen=new Checkbox("Green");
colorBlue=new Checkbox("Blue");
colorPink=new Checkbox("Pink");
colorYellow=new Checkbox("Yellow");
colorRed.setCheckboxGroup(groupColors);
colorGreen.setCheckboxGroup(groupColors);
colorBlue.setCheckboxGroup(groupColors);
colorPink.setCheckboxGroup(groupColors);
colorYellow.setCheckboxGroup(groupColors); fill=new Checkbox("Fill");
notfill=new Checkbox("Not fill");
fill.setCheckboxGroup(groupFill);
notfill.setCheckboxGroup(groupFill); groupTypes.setSelectedCheckbox(typeLine);
groupTypes.setSelectedCheckbox(colorBlue);
groupTypes.setSelectedCheckbox(notfill); typeLine.addMouseListener(this);
typeRectangle.addMouseListener(this);
typeCircle.addMouseListener(this);
btnClear.addActionListener(this);
colorRed.addMouseListener(this);
colorGreen.addMouseListener(this);
colorPink.addMouseListener(this);
colorYellow.addMouseListener(this);
fill.addMouseListener(this); add(typeLine);
add(typeRectangle);
add(typeCircle);
add(btnClear);
add(fill);
add(notfill);
add(colorRed);
add(colorGreen);
add(colorBlue);
add(colorPink);
add(colorYellow);
}
public void paint(Graphics g){
g.setColor(getCurrentColor());
int currentType=getCurrentType();
if(startPoint!=null && endPoint!=null && blClear==false){
switch(currentType){
case line:
g.drawLine(startPoint.x,startPoint.y,endPoint.x,endPoint.y) ;
break;
case rectangle:
checkPoints();
if (!getFillStatus()){
g.drawRect(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y);
}
else{
g.fillRect(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y);
}
break;
case circle:
checkPoints();
if(!getFillStatus()){
g.drawArc(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y,0,360);
}
else{
g.fillArc(startPoint.x,startPoint.y,endPoint.x-startPoint.x,endPoint.y-startPoint.y,0,360);
}
break;
}
}
blClear=false;
}
private void checkPoints(){
Point temp;
if(startPoint.x>endPoint.x){
temp=startPoint;
startPoint=endPoint;
endPoint=temp;
temp=null;
}
}private Color getCurrentColor(){
Color currentColor=Color.blue;
Checkbox selectedColor=groupColors.getSelectedCheckbox();
if(selectedColor!=null){
String lblColor=selectedColor.getLabel();
if(lblColor.equals("Red")){
currentColor=Color.red;
}
else if(lblColor.equals("Green")){
currentColor=Color.green;
}
else if(lblColor.equals("Blue")){
currentColor=Color.blue;
}
else if(lblColor.equals("Pink")){
currentColor=Color.pink;
}
else if(lblColor.equals("Yellow")){
currentColor=Color.yellow;
}
}
return currentColor;
} public boolean getFillStatus(){
boolean blFill=false;
Checkbox selectedFill=groupFill.getSelectedCheckbox();
if(selectedFill!=null){
String lblColor=selectedFill.getLabel();
if(lblColor.equals("Fill")){
blFill=true;
}
}
return blFill;
} private int getCurrentType(){
int currentType=line;
Checkbox selectedType=groupTypes.getSelectedCheckbox();
if(selectedType!=null){
String lblType=selectedType.getLabel();
if(lblType.equals("Line")){
currentType=line;
}
else if(lblType.equals("Circle")){
currentType=circle;
}
else{
currentType=line;
}
}
return currentType;
}
public void mousePressed(MouseEvent e){
startPoint=e.getPoint();
} public void mouseReleased(MouseEvent e){
endPoint=e.getPoint();
paint(this.getGraphics());
} public void mouseClicked(MouseEvent e){
} public void mouseDragged(MouseEvent e){
} public void mouseMoved(MouseEvent e) {
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
} public void actionPerformed(ActionEvent e){
blClear=true;
repaint();
}
}
currentType=line;
}
else if(lblType.equals("Circle")){
currentType=circle;
}
else{
currentType=line;
}
}
return currentType;
}
這一段里,你並沒有返回rectangle
是不是 else{
currentType=line;
}
要改為
else{
currentType=rectangle;
}