漠然とした質問かもしれませんが、ご容赦ください。
カスタマイズされた JTable (クエリを変更しました。提供された SSCCE に基づいて説明します)。JTable で選択したチェックボックスに基づいて承認を提供する JTable を作成する必要があります
この JTable の目的は、アプリケーションのすべてのメニュー オプションをユーザーに表示することです。この JTable には 3 つの列があります。 最初の列: クラス Bollean (チェックボックス) 2 番目の列: クラス String (メイン メニュー項目) 3 番目の列: クラス String (サブメニュー項目)
承認を提供するには、ユーザーはサブメニュー項目に対応するチェックボックスを選択し、最後に「承認」ボタンを選択する必要があります (承認機能が正常に機能しているため、これには承認ボタンを含めていません)。
UI 要件は、JTable の最初の列に、最初の列の各セルにチェックボックスを表示するのではなく、サブメニュー項目に対応するチェックボックスのみを表示する必要があることです (つまり、メイン メニュー メニュー項目に対応するチェックボックスを表示してはなりません)。
下の写真は予想される出力です(ただし、チェックボックスを使用して最初の列にすべてのセルを取得しています)
public class SwingSolution extends JPanel {
public SwingSolution() {
super(new GridLayout(1,0));
String[] columnNames = {"", "Main Menu", "Sub Menu"};
Object[][] data = {
{false, "File", ""},
{false, "", "New"},
{false, "", "Save"},
{false, "", "Close"},
{false, "Edit", ""},
{false, "", "Delete"},
{false, "", "Format"},
{false, "Project", ""},
{false, "", "Create New"},
{false, "", "Delete"},
{false, "", "Build"},
{false, "", "Properties"},
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
final JTable table = new JTable(model) {
private static final long serialVersionUID = 1L;
@Override
public Class getColumnClass(int column) {
switch (column) {
case 0:
return Boolean.class;
case 1:
return String.class;
case 2:
return String.class;
default:
return Boolean.class;
}
}
};
table.getColumnModel().getColumn(0).setMaxWidth(30);
table.getColumnModel().getColumn(1).setMaxWidth(100);
table.getColumnModel().getColumn(2).setMaxWidth(120);
table.setPreferredScrollableViewportSize(new Dimension(250, 195));
table.setFillsViewportHeight(true);
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.
add(scrollPane);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
SwingSolution newContentPane = new SwingSolution();
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) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
セル レンダラーでさまざまなことを試し、JTable とカスタム セルについてググったのですが、わかりませんでした。どんな助けでも大歓迎です