2012-02-06 28 views
-1

任何人都可以请帮我解决这个问题。我有这个阵列的String,我想在一个表中绘制不使用的JTable:在表中分配字符串

String inventory[][] = {{"Chairs","Tables"},{"Bed","Sofas"}} 

我使用嵌套for循环和drawLine生成这个网格但我不能设法把String在表内。谁能帮我?

它不是我的程序,但这是关闭的例子,我已经形成互联网。我的程序有点类似这个。

import java.awt.* ; 
import java.awt.event.* ; 
import javax.swing.* ; 
import javax.swing.border.TitledBorder; 
import javax.swing.border.EtchedBorder; 
import java.awt.*; 
import java.awt.event.*; 

public class testtable extends JFrame { 

    private static final int DRAWING_SIZE = 600; 
    private static final int SUBDIVISIONS = 2; 
    private static final int SUBDIVISION_SIZE = DRAWING_SIZE/SUBDIVISIONS; 

    public testtable() { 
     setSize(800, 800); 
     setLayout(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.weightx = 1.0; 
     gbc.weighty = 1.0; 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     JLabel drawingBoard = new JLabel("Drawing Board"); 
     gbc.anchor = GridBagConstraints.SOUTH; 
     drawingBoard.setFont(new Font("Serif", Font.BOLD, 28)); 
     add(drawingBoard, gbc); 
     JPanel panel = new JPanel() { 
     @Override public void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      Graphics2D g2 = (Graphics2D) g; 
      g2.setPaint(Color.GRAY); 
      for (int i = 1; i < SUBDIVISIONS; i++) { 
       int x = i * SUBDIVISION_SIZE; 
       g2.drawLine(x, 0, x, getSize().height); 
      } 
      for (int i = 1; i < SUBDIVISIONS; i++) { 
       int y = i * SUBDIVISION_SIZE; 
       g2.drawLine(0, y, getSize().width, y); 
      } 
     } 
     }; 
     panel.setPreferredSize(new Dimension(DRAWING_SIZE, DRAWING_SIZE)); 
     panel.setBackground(Color.WHITE); 
     panel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); 
     gbc.gridy++; 
     gbc.anchor = GridBagConstraints.CENTER; 
     add(panel, gbc); 
     JButton saveDrawing = new JButton("SAVE DRAWING"); 
     gbc.gridy++; 
     gbc.anchor = GridBagConstraints.NORTH; 
     add(saveDrawing, gbc); 
    } 
    public static void main(String[] args) { 
     (new testtable()).setVisible(true); 
    } 
} 
+1

你现在有什么代码?也许我们可以帮助你建立起它。 – 2012-02-06 22:37:39

+0

对不起,我不能这么做因为我的论文的一部分,但这里是我得到形式互联网关闭的例子。它不完全一样,但很接近。 – user1110191 2012-02-06 22:43:51

+0

不过,你不提供样品,所以我们能做的最好的事情就是猜测。所以我的猜测是你正在搞乱Graphics2D方法?那么你可以简单地使用drawString方法,不是吗? – 2012-02-06 22:49:07

回答

0

有一点不清楚,但我想你已经对一些现有的UI类中重写paintpaintComponent和使用Graphics.drawLine方法来绘制表格网格。

如果这是正确的,那么你可以做出类似的嵌套循环,并在里面调用Graphics.drawString来呈现字符串。考虑一下字符串是通过基线锚定的,而不是通过左上角。

UPD。发布之前,你的编辑,所以第一部分的答案现在看起来很奇怪。