将图形添加到JButton

时间:2012-04-26 16:09:20

标签: java swing awt jpanel jbutton

我正在构建一个数独游戏,我正在尝试为每个按钮添加不同的图形。我遇到的问题是让图形看起来正确。我编辑了这个以显示我的工作。我现在面临的一个大问题是我的绘图会超出我的按钮,所以我无法在按钮上方获取图像......我要么得到按钮,要么得到绘图。

import java.awt.Graphics;
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;

public class SudokuViewWorks extends JPanel {


  private JPanel centerBoard;
  private int cellSize = 48;
  private int Rows;
  private int Cols;
  private int boardSize;
  private MyPanel[][] region;

  public SudokuViewWorks(SudokuBase sb){
    super(new GridLayout(3,3,3,3));
    setVisible(true);

    SudokuBase board = sb;
    Rows = board.rows;
    Cols = board.columns;
    boardSize = Rows * Cols;
     //setBorder(BorderFactory.createLineBorder(Color.black));
     region= new MyPanel[3][3];

     for (int i =0; i < 3; i++){
        for(int j =0; j<3; j++) {
          region[i][j] = new MyPanel(i);
          add(region[i][j]);
          //repaint();


    setPreferredSize(new Dimension(boardSize*cellSize + (boardSize*2 + 11), boardSize*cellSize +(boardSize*2 + 11)));

  }

    //public void paintComponent(Graphics g){

      // a panel for the sudoku board
      //centerBoard = new JPanel(new GridLayout(boardSize, boardSize));



        //Cell button = new Cell(boardSize,boardSize);
        //JButton button = new JButton();
        //ImageIcon icon = new ImageIcon(drawSymbol(g,i));
        //button.setIcon(icon);
        //button.setLayout
        //centerBoard.add(new MyPanel(i));



      }

      //add Jpanel
      //add(region);


    }


    class MyPanel extends JPanel {
      public int num;
      JLabel[][] label = new JLabel[3][3];

      public MyPanel(int numb) {
        super(new GridLayout(3,3,1,1));
        for(int i=0; i<3; i++) {
          for (int j = 0; j<3; j++) {
            label[i][j] = new JLabel("i");
            //label[i][j] = new Cell(boardSize,boardSize);
            add(label[i][j]);
            num = numb;
            setBorder(BorderFactory.createLineBorder(Color.black));
            setVisible(true);

          }
        }
         repaint();
      }

      public Dimension getPreferredSize() {
        return new Dimension(50,50);
      }

      public void paintComponent(Graphics g) {
        //super.paintComponent(g);

      switch(num) {
      case 1:  g.setColor(Color.BLUE);
               g.drawRect(15, 15, 25, 25);

      case 2: g.drawOval(67, 67, 25, 25);
              g.drawString("one", 10,20);

      case 3: g.drawLine(119, 119, 144, 144);
              g.drawString("2", 60,70);
              g.drawLine(144, 119, 119, 144);

      case 4: g.setColor(Color.YELLOW);
           //g.fillRect(10, 20, 80, 70);
           //g.setColor(Color.RED);


      case 5:  g.setColor(Color.GREEN);
               g.fillOval(50, 25, 25, 25); 

      case 6: g.fillOval(50, 25, 25, 25);

      case 7: g.fillOval(50, 25, 25, 25);

      case 8: g.fillOval(50, 25, 25, 25);

      case 9: g.fillOval(50, 25, 25, 25);
      }
       //repaint();

      }
    }





  /**
   * here is the method we are testing against
   */
  public static SudokuBase makeBoard() {
      SudokuBase board = new SudokuBoard(2, 3);
      board.setValue(0, 3, 6);
      board.setValue(0, 5, 1);
      board.setValue(1, 2, 4);
      board.setValue(1, 4, 5);
      board.setValue(1, 5, 3);
      board.setValue(2, 3, 3);
      board.setValue(3, 2, 6);
      board.setValue(4, 0, 2);
      board.setValue(4, 1, 3);
      board.setValue(4, 3, 1);
      board.setValue(5, 0, 6);
      board.setValue(5, 2, 1);
      board.fixGivens();
      board.setValue(1, 0, 6);
      board.setValue(3, 1, 5);
      return board;
   }

  /**public void setSelected(int row, int col){
  }
  public int getSelectedRow(){
  }
  public int getSelectedColumn(){
  }*/

  public static void main(String[] args) {
      JFrame win = new JFrame("Test board");
      win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      SudokuViewWorks view = new SudokuViewWorks(makeBoard());

     //win.add(ggo);
      win.add(view);
      win.setVisible(true);
      win.pack();
   }

}

0 个答案:

没有答案