0

こんにちは、Java で JTable を作成していますが、奇妙な問題があります。背景色しか見えません。

これは、作成を担当するメソッドです。

public void createCustomerList() {

    table = new JTable();
    tableModel = new DefaultTableModel();

    tableModel.addColumn("Naam");
    tableModel.addColumn("Achternaam");
    tableModel.addColumn("Klant-ID");

    table.setSize(954, 686);
    table.setLocation(100, 78);
    table.setBackground(Color.white);
    table.setForeground(Color.black);
    table.setGridColor(Color.black);
    table.setRowHeight(30);
    table.setFont(new Font("Tahoma", Font.PLAIN, 36));

    JScrollPane scrollPane = new JScrollPane(table);
    table.setModel(tableModel);
    this.add(scrollPane);
    this.add(table);

}

コンストラクターでこのメソッドを呼び出します。しかし、背景色しか取得できません (黒や赤などに変更すると変更されます) が、列やグリッドなどは表示されません。どこに問題があるのでしょうか?

4

1 に答える 1

2

テーブルをコンテナーに追加することで、スクロール ペインからテーブルを削除しました。最後の add ステートメントを削除することから始め、適切なレイアウト マネージャーを使用していることを確認します。

TrashGod が指摘したように、ルック アンド フィールによっては、グリッドの色をテーブルの背景色と同じ色に設定することを選択する場合があります。

実際の例で更新

JTablea (またはその他のコンポーネント) を aに追加するJScrollPaneと、コンポーネントはスクロール ペインの制御下に置かれ、コンポーネントのレイアウトを (かなり) 制御できなくなります。

次に、適切にレイアウトすることに集中する必要がありJScrollPaneます...

ここに画像の説明を入力

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class QuickTable {

    public static void main(String[] args) {
        new QuickTable();
    }

    public QuickTable() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JTable table = new JTable();
                DefaultTableModel tableModel = new DefaultTableModel();

                tableModel.addColumn("Naam");
                tableModel.addColumn("Achternaam");
                tableModel.addColumn("Klant-ID");

                for (int index = 0; index < 10; index++) {

                    String value = Integer.toString(index);
                    tableModel.addRow(new Object[]{value, value, value});

                }

                table.setModel(tableModel);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
于 2013-10-31T20:42:13.173 に答える