Присвоение строки в таблице - PullRequest
0 голосов
/ 07 февраля 2012

Может кто-нибудь, пожалуйста, помогите мне в этой проблеме.У меня есть этот массив 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 Ответ

0 голосов
/ 07 февраля 2012

Немного неясно, но я предполагаю, что вы переопределили paint или paintComponent в некотором существующем классе пользовательского интерфейса и использовали метод Graphics.drawLine для рисования сетки таблицы.

Если это так, то вы можете сделать похожий вложенный цикл и вызвать Graphics.drawString внутри для рендеринга строк. Учтите, что строки привязаны к базовой линии, а не к левому верхнему углу.

UPD. Размещено до ваших правок, поэтому первая часть ответа теперь выглядит странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...