2014-06-20 43 views
0

我是新來的Java圖形,我需要一些幫助。我正在嘗試爲遊戲kakuro創建一個gui。在這裏你可以看到董事會如何看起來像http://en.wikipedia.org/wiki/Kakuro的圖像。我已經有一些代碼來創建矩形的網格,但我不知道如何填充矩形中心的數字,最重要的是,我怎樣才能將一些矩形對角地分割成一行需要放置的線兩個不同的數字在這些例子中?kakuro gui佈局網格與矩形

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); 
    } 
} 

回答

0

您可以使用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(); } 
     }); 
    } 
} 
使用幾個 JLabelJButton