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

说让画两个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);
   }
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值