Какуро GUI макет сетки с прямоугольниками

Я новичок в графике Java, и мне нужна помощь. Я пытаюсь создать графический интерфейс для игры Какуро. Здесь вы можете увидеть изображения того, как выглядит доска http://en.wikipedia.org/wiki/Kakuro. У меня уже есть некоторый код для создания сетки с прямоугольниками, но я не знаю, как именно я могу заполнить числа в центре прямоугольников и, что наиболее важно, как я могу разбить некоторые из прямоугольников по диагонали с линией, где необходимо поставить два разных числа в них как на примерах?

    import java.awt.Graphics;
    import javax.swing.JComponent;
    import javax.swing.JFrame;

    class Grid extends JComponent {
    public void paint(Graphics g) {
    int width=30;
    int height=30;    
    for(int x=0;x<10;x++)
    {
        for(int y=0 ;y < 10;y++)
        {
            // create rectangles
            g.drawRect(x*width,y*height,width,height);
            // Fill in values. However, how to make it in the centre?
            g.drawString("2", x*width,y*height);
        }
    }
   }
  }

   public class Cube {

   public static void main(String[] a) {
    JFrame window = new JFrame();
    window.setSize(200,200);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.getContentPane().add(new Grid());
    window.setVisible(true);
  }
}

1 ответ

Вы можете использовать пару JLabel на JButton с использованием BorderLayout

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class KakuroCorner {

    private JFrame frame;
    private JButton myButton1;
    private JLabel myButton1_Label_E;
    private JLabel myButton1_Label_S;

    public KakuroCorner() {
        myButton1_Label_E = new JLabel("3");
        myButton1_Label_E.setHorizontalAlignment(JLabel.CENTER);
        myButton1_Label_E.setForeground(Color.white);

        myButton1_Label_S = new JLabel("45");
        myButton1_Label_S.setHorizontalAlignment(JLabel.CENTER);
        myButton1_Label_S.setForeground(Color.white);

        myButton1 = new JButton();
        myButton1.setBackground(Color.black);
        myButton1.setLayout(new BorderLayout());
        myButton1.add(myButton1_Label_E, BorderLayout.EAST);
        myButton1.add(myButton1_Label_S, BorderLayout.SOUTH);
        myButton1.setEnabled(false);

        frame = new JFrame();
        frame.add(myButton1);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() { new KakuroCorner(); }
        });
    }
}
Другие вопросы по тегам