2

我正在制作一个保持出席的应用程序。一旦我有了学生名单,我将如何将他们全部显示并检查他们是否在场。我最初认为 JTable 会起作用,但将摆动组件添加到 JTable 并不是世界上最简单的事情。有没有更简单的方法来解决这个问题?下图大致展示了我所描绘的内容,但如果您有不同的想法,请随时分享。谢谢!

在此处输入图像描述

4

3 回答 3

2

我的建议是,使用复选框而不是两个单选框控件。它看起来更好。

并检查呈现的用户。

于 2013-01-24T14:52:28.963 回答
2

AFAIK 前 3 列看起来很正常。但第四栏是我认为你被困在的地方。

阅读 中的渲染器和编辑JTable

我认为将 a 渲染JPanel到最后一列就可以了。在那JPanel加上两个JRadioButton

此处此处显示了这样做的一个示例。

PS:我尝试了这种方法,它有效。

于 2013-01-24T15:15:33.677 回答
2

在此处输入图像描述

这是一个 EG 来展示如何使用JTable

正如@Hendrik Ebbers 所建议的那样,我为coloumn保留了一个布尔值ABS/Present,它将自动以CheckBox. 首先你必须设置你JTabel使用的模型fooTable.setModel(dataModel)

像这样的东西:

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"Joel", "Hails", new Integer(1011001), new Boolean(true)},
            {"James", "Roggers", new Integer(1912212), null},
            {"Rehy", "Gomes", new Integer(1121212), new Boolean(true)},
            {"Sunil", "gawas", new Integer(9909090), null}
        },
        new String [] {
            "1st name", "last name", "ID/NUMBER", "ABS/Present"
        }
    )

我在哪里new Object [][]有我的所有数据,并且new String []会有列名。

休息你可以找到更多信息

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

自己试试,有问题求源码。

更新:

你可以试试这个:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.SwingUtilities;

 public class NewJFrame3 extends JPanel {

 public NewJFrame3() {
 super(new GridLayout(1,0));
 JTable table = new JTable(new MyTableModel());
 table.setPreferredScrollableViewportSize(new Dimension(500, 70));
 table.setFillsViewportHeight(true);

 JScrollPane scrollPane = new JScrollPane(table);

 add(scrollPane);
 }
 class MyTableModel extends AbstractTableModel {
 private String[] columnNames = {"1st Name",
 "Last Name",
 "ID/NUMBER",
 "PRESENT"};
 private Object[][] data = {
 {"Joel", "Hails",
 "110023", new Boolean(false)},
 {"John", "Doe",
 "343409", new Boolean(true)},
 {"Sue", "well",
 "899800", new Boolean(false)},
 {"Jane", "White",
 "990909", new Boolean(true)},

 };
 public int getColumnCount() {
 return columnNames.length;
 }
 public int getRowCount() {
 return data.length;
 }
 public String getColumnName(int col) {
 return columnNames[col];
 }
  public Object getValueAt(int row, int col) {
  return data[row][col];
  }

public Class getColumnClass(int c) {
  return getValueAt(0, c).getClass();
   }




 }

 private static void createAndShowGUI() {
 //Create and set up the window.
 JFrame frame = new JFrame("TableDemo");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //Create and set up the content pane.
 NewJFrame3 newContentPane = new NewJFrame3();
 newContentPane.setOpaque(true); //content panes must be opaque
 frame.setContentPane(newContentPane);
 //Display the window.
 frame.pack();
 frame.setVisible(true);
 }
 public static void main(String[] args) {

 SwingUtilities.invokeLater(new Runnable() {
 public void run() {
 createAndShowGUI();
 }
 });
 }
 }
于 2013-01-24T15:40:59.677 回答