纠结,让画两个OvalButton对象,另今天画了个棋盘

    技术2026-06-06  3

    说让画两个OvalButton,想add两个OvalButton不行,因为修改过paintComponent,每次调用就把前边画的清空了,只能调用一次啊,题上却说显示两个OvalButton对象,纠结了,难道还是从paintComponent入手?主要掌握方法太少了,现在主要就是书上给的一种方法,定义一个类,重写paintComponent方法,调用一下,画图。除了后边几个选修的没来得及看。

    重点:前边有个FigurePanel类,也是让显示6个图形面板对象,出现了editor does not contain a main type错误,就是说:

    还没找到方法画出多个对象

    package Program13;

    import java.awt.FlowLayout;import java.awt.Graphics;

    import javax.swing.JFrame;import javax.swing.JPanel;

    public class Program_13_1_bV2 extends JFrame{ public Program_13_1_bV2(){    add(new OvalButton("Cancel",130,30));  add(new OvalButton("OK",30,30));

     } public static void main(String[] args){  Program_13_1_bV2 frame = new Program_13_1_bV2();  frame.setTitle("Program_13_1_bV2");  frame.setLocationRelativeTo(null);  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  frame.setSize(320,210);  frame.setVisible(true); }}class OvalButton extends JPanel{ private String str="hello"; private int xCoordinate; private int yCoordinate; public OvalButton(){   } public OvalButton(String str,int xCoordinate,int yCoordinate){  this.str = str;  this.xCoordinate = xCoordinate;  this.xCoordinate = xCoordinate; } protected void paintComponent(Graphics g){//  super.paintComponent(g);  g.drawRect(xCoordinate,yCoordinate+30,100,60);  g.drawOval(xCoordinate+3,xCoordinate+3,94,54);  g.drawString(str,xCoordinate+42 ,xCoordinate+36 );     }}

     

     

    棋盘太简单了,不用费时间想怎么做。问题是,画图的尺寸老对不上,比如,8*8 == 64格的图,每格width是40,height是20,那如果用Size == (320,160);图是画不全的,必须自己一点一点试出来是335,195。这个问题已经搁置了一阵子了

    package Program13;

    import java.awt.Graphics;

    import javax.swing.JFrame;import javax.swing.JPanel;

    public class Program_13_1_c extends JFrame{ public Program_13_1_c(){  add(new chessBoard()); }   public static void main(String[] args){  Program_13_1_c frame = new Program_13_1_c();  frame.setTitle("Program_13_1_bV2");  frame.setLocationRelativeTo(null);  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  frame.setSize(335,195);  frame.setVisible(true); }}class chessBoard extends JPanel{  protected void paintComponent(Graphics g){  super.paintComponent(g);  for(int i = 0;i < 8;i++){   for(int j = 0;j < 8;j++){    if(((i + j) % 2) == 0)     g.drawRect(40*i, 20*j, 40, 20);    else     g.fillRect(40*i, 20*j, 40, 20);   }  } }}

    最新回复(0)