public void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(50,450,550,450); g.drawLine(50,20,50,450);
Polygon p10 = new Polygon(); p10.addPoint(45,20); p10.addPoint(55,20); p10.addPoint(50,15); g.drawPolygon(p10);
Polygon p11 = new Polygon(); p11.addPoint(550,445); p11.addPoint(550,455); p11.addPoint(555,450); g.drawPolygon(p11); try { SAXBuilder sb = new SAXBuilder(); Document doc = sb.build(new FileInputStream("xxx.xml")); Element root = doc.getRootElement();
if(!Const.findElement(root.getChild("income"),aYear)) { g.setColor(Color.red); g.drawString("(选择的年没数据)",250,250); g.setColor(Color.black); } else { int big = 0; int[] gx = new int[12]; int[] gy = new int[12]; int total = 0;
现在不会发生花掉,但是原来画的东西,离开界面一次,就少一次,不知道为什么 我从前听别人说过,要重载某一个方法,但是忘了具体那个方法 public void update(Graphics g){ paint(g); } This method was overridden to prevent an unnecessary call to clear the background
{
super.paintComponents(g);///这里写错了应该是
public void paintComponent(Graphics g)
{
super.paintComponent(g);//没有"s"的
paintComponent(Graphics g);
}思路这样
{
super.paintComponent(g);
}
paintComponent(Graphics g);
}思路这样
我编译了一下g那里报错
{
super.paintComponent(g);
}
父类的!父类的!
paintComponent(Graphics g)
^
D:\Personal_Poject\javaProject\LC\yearLine.java:123: ';' expected
^
2 errorsProcess completed.
JFrame上画图要调用这个方法,因为任何覆盖会破坏ContentPane层的
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import java.io.*;
import java.util.List;
import javax.swing.border.*;
import java.applet.*;public class yearLine extends javax.swing.JPanel
{
public yearLine(String aYear1) {
aYear = aYear1;
aYear = "a2003";
initComponents();
}
private void initComponents() {
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(50,450,550,450);
g.drawLine(50,20,50,450);
Polygon p10 = new Polygon();
p10.addPoint(45,20);
p10.addPoint(55,20);
p10.addPoint(50,15);
g.drawPolygon(p10);
Polygon p11 = new Polygon();
p11.addPoint(550,445);
p11.addPoint(550,455);
p11.addPoint(555,450);
g.drawPolygon(p11);
try
{
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(new FileInputStream("xxx.xml"));
Element root = doc.getRootElement();
if(!Const.findElement(root.getChild("income"),aYear))
{
g.setColor(Color.red);
g.drawString("(选择的年没数据)",250,250);
g.setColor(Color.black);
}
else
{
int big = 0;
int[] gx = new int[12];
int[] gy = new int[12];
int total = 0;
for(int i=1;i<=12;i++)
{
if(Const.findElement(root.getChild("income").
getChild(aYear),"a"+i))
{
for(int r=0;r<root.getChild("income").
getChild(aYear).getChild("a"+i).getChildren().size();r++)
{
System.out.println("这个月数据为");
total = total+Integer.parseInt(((Element)root.getChild("income").
getChild(aYear).getChild("a"+i).getChildren().get(r)).getAttributeValue("num"));
}
if(big < total)
{
big = total;
}
System.out.println("这个月数据为"+total);
}
else
{
System.out.println("这个月数据为0");
total = 0;
}
g.drawLine(50+i*40,445,50+i*40,450);
g.drawString(""+i,50+i*40-4,465);
gx[i-1] = (50+i*40);
gy[i-1] = 450-(int)(total*0.08);
if (gy[i-1]==0)
{
gy[i-1] = 450;
}
}
for(int h=1;h<=10;h++)
{
g.drawLine(50,450-(int)(500*h*0.08),55,450-(int)(500*h*0.08));
g.drawString(""+500*h,15,450-(int)(500*h*0.08)+5);
}
for(int j=0;j<12;j++)
{
if(j==11)
{
}
else
{
System.out.println(gy[j]);
g.drawLine(gx[j],gy[j],gx[j+1],gy[j+1]);
}
}
}
}
catch(Exception e1)
{
System.out.println(e1);
}
g.drawString("(月)",555,465);
}
public static void main(String args[])
{
yearLine yl = new yearLine("2003");
yl.setSize(600,500);
JFrame jf = new JFrame();
jf.setSize(600,500);
jf.getContentPane().add(yl);
jf.validate();
jf.show();
}
private String aYear;}代码如此,请问如何改进
// enable anti-aliasing to smooth jagged lines
g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON );
// enable high-quality rendering in Graphics2D object
g2D.setRenderingHint( RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY );
g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON );
g2d.setRenderingHint( RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY );问题解决,谢谢各位
我从前听别人说过,要重载某一个方法,但是忘了具体那个方法
public void update(Graphics g){
paint(g);
}
This method was overridden to prevent an unnecessary call to clear the background