Какуро 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(); }
});
}
}