2

I'm in the process of making an application that keeps attendance. Once I have a list of students, how would I go about displaying them all and checking whether they are present or absent. I intially thought JTable would work, but it's not the easiest thing in the world to add swing components to a JTable. Is there an easier way to go about this? The image below shows roughly what I'm picturing, but if you have a different idea, feel free to share. Thanks!

enter image description here

4

3 に答える 3

2

私の提案は、2 つのラジオ ボックス コントロールの代わりにチェックボックスを使用することです。

そして、提示されたユーザーを確認してください。

于 2013-01-24T14:52:28.963 に答える
2

私の知る限り、最初の 3 列は正常に見えます。しかし、4 番目の列は、あなたが行き詰ったと私が思うものです。

のレンダラーとエディターについてお読みくださいJTable

JPanelaを最後の列にレンダリングするとうまくいくと思います。そのJPanel上に 2 を追加しJRadioButtonます。

それを行う一例がここここに示されています。

PS:このアプローチを試してみましたが、うまくいきました。

于 2013-01-24T15:15:33.677 に答える
2

ここに画像の説明を入力

以下は、使用方法を示す EG です。JTable

ABS/Present@Hendrik Ebbers で提案されているように、列のブール値を保持しています。自動的に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 に答える