दिलचस्प पोस्ट
अपवाद नहीं फेंक दिए जाने पर ब्लॉक / प्रदर्शन को रोकने के प्रयास करें? Android दृश्य छाया जेएस दिनांक ऑब्जेक्ट से YYYYMMDD प्रारूप में स्ट्रिंग प्राप्त करें? लोडिंग के साथ jqgrid reloadGrid को सही पर सेट करें क्यों MYSQL उच्च LIMIT ऑफ़सेट क्वेरी नीचे धीमा है? ईलेप्प्स इंटरव्यू के तरीकों पर @ ओवरराइड के बारे में क्यों शिकायत करता है? आईएमजी एसआरपी एसवीजी फिल रंग बदल रहा है लिनक्स में पीएचपी का उपयोग करके वर्ड दस्तावेज़ बनाएँ त्रुटि: mksdcard SDK उपकरण चलाने में असमर्थ कोई एक प्रोफाइलर का उपयोग कर सकता है, लेकिन क्यों न केवल प्रोग्राम को रोकें? एंड्रॉइड में सर्कुलर इमेजिव्यू कैसे बनाएं? संग्रह संशोधित किया गया था; गणना कार्य निष्पादित नहीं हो सकता है किसी भी क्रम में दो नाम वाली स्ट्रिंग से मिलान करने के लिए रेगेक्स टेक्स्ट के आधार पर यूआईएलएबल ऊंचाई समायोजित करें आप आर में "<< -" (स्क्रॉपिंग असाइनमेंट) का उपयोग कैसे करते हैं?

शीर्षक वाली पंक्तियों और स्तंभों के साथ JTable

मैं कैसे कॉलम और पंक्तियों दोनों के शीर्षक के साथ एक JTable हो सकता है?
कुछ इस तरह:

+------+------+------+------+ |/\/\/\| col1 | col2 | col3 | +------+------+------+------+ | row1 | | | | +------+------+------+------+ | row2 | | | | +------+------+------+------+ | row3 | | | | +------+------+------+------+ 

धन्यवाद

वेब के समाधान से एकत्रित समाधान "शीर्षक वाली पंक्तियों और स्तंभों के साथ JTable"

मुझे लगता है कि आप रोटेबल खोज रहे हैं

यहां छवि विवरण दर्ज करें

 import java.awt.*; import java.awt.event.ActionEvent; import javax.swing.*; import javax.swing.UIManager.*; import javax.swing.event.*; import javax.swing.table.*; public class JTableRowHeader { private JFrame frame = new JFrame("JTable RowHeader"); private JScrollPane scrollPane; private JTable table; private DefaultTableModel model; private TableRowSorter<TableModel> sorter; private JTable headerTable; public JTableRowHeader() { table = new JTable(4, 4); for (int i = 0; i < table.getRowCount(); i++) { table.setValueAt(i, i, 0); } sorter = new TableRowSorter<TableModel>(table.getModel()); table.setRowSorter(sorter); model = new DefaultTableModel() { private static final long serialVersionUID = 1L; @Override public int getColumnCount() { return 1; } @Override public boolean isCellEditable(int row, int col) { return false; } @Override public int getRowCount() { return table.getRowCount(); } @Override public Class<?> getColumnClass(int colNum) { switch (colNum) { case 0: return String.class; default: return super.getColumnClass(colNum); } } }; headerTable = new JTable(model); for (int i = 0; i < table.getRowCount(); i++) { headerTable.setValueAt("Row " + (i + 1), i, 0); } headerTable.setShowGrid(false); headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); headerTable.setPreferredScrollableViewportSize(new Dimension(50, 0)); headerTable.getColumnModel().getColumn(0).setPreferredWidth(50); headerTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable x, Object value, boolean isSelected, boolean hasFocus, int row, int column) { boolean selected = table.getSelectionModel().isSelectedIndex(row); Component component = table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table, value, false, false, -1, -2); ((JLabel) component).setHorizontalAlignment(SwingConstants.CENTER); if (selected) { component.setFont(component.getFont().deriveFont(Font.BOLD)); component.setForeground(Color.red); } else { component.setFont(component.getFont().deriveFont(Font.PLAIN)); } return component; } }); table.getRowSorter().addRowSorterListener(new RowSorterListener() { @Override public void sorterChanged(RowSorterEvent e) { model.fireTableDataChanged(); } }); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { model.fireTableRowsUpdated(0, model.getRowCount() - 1); } }); scrollPane = new JScrollPane(table); scrollPane.setRowHeaderView(headerTable); table.setPreferredScrollableViewportSize(table.getPreferredSize()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.add(scrollPane); frame.add(new JButton(new AbstractAction("Toggle filter") { private static final long serialVersionUID = 1L; private RowFilter<TableModel, Object> filter = new RowFilter<TableModel, Object>() { @Override public boolean include(javax.swing.RowFilter.Entry<? extends TableModel, ? extends Object> entry) { return ((Number) entry.getValue(0)).intValue() % 2 == 0; } }; @Override public void actionPerformed(ActionEvent e) { if (sorter.getRowFilter() != null) { sorter.setRowFilter(null); } else { sorter.setRowFilter(filter); } } }), BorderLayout.SOUTH); frame.pack(); frame.setLocation(150, 150); frame.setVisible(true); } public static void main(String[] args) { try {// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if (info.getName().equals("Nimbus")) { UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (Exception e) { //e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { @Override public void run() { JTableRowHeader TestTableRowHeader = new JTableRowHeader(); } }); } } 

रो हैडर और तालिका मान समाधान में mKorbel से अपेषणित हैं। तालिका को पंक्ति 1 और रो 2 के बजाय पंक्ति 1 और पंक्ति 3 के स्थान पर दिखाया गया है।

यहां उनके उदाहरण के आधार पर एक समाधान है। यह पंक्ति शीर्ष लेख को तालिका में एक नया कॉलम में डुप्लिकेट करता है, इस कॉलम को छुपाने और फ़िल्टर किए जाने पर मूल्यों की प्रतिलिपि अन्य के लिए।

यह काम करता है और यह बदसूरत है, हमें किसी से बेहतर समाधान की आवश्यकता है 🙂

 import java.awt.*; import java.awt.event.ActionEvent; import javax.swing.*; import javax.swing.UIManager.*; import javax.swing.event.*; import javax.swing.table.*; public class JTableRowHeader { private JFrame frame = new JFrame("JTable RowHeader"); private JScrollPane scrollPane; private JTable table; private DefaultTableModel model; private TableRowSorter<TableModel> sorter; private JTable headerTable; public JTableRowHeader() { table = new JTable(4, 5); for (int i = 0; i < table.getRowCount(); i++) { table.setValueAt("Row " + (i + 1), i, 0); table.setValueAt(i, i, 1); } sorter = new TableRowSorter<TableModel>(table.getModel()); table.setRowSorter(sorter); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); model = new DefaultTableModel() { private static final long serialVersionUID = 1L; @Override public int getColumnCount() { return 1; } @Override public boolean isCellEditable(int row, int col) { return false; } @Override public int getRowCount() { return table.getRowCount(); } @Override public Class<?> getColumnClass(int colNum) { switch (colNum) { case 0: return String.class; default: return super.getColumnClass(colNum); } } }; headerTable = new JTable(model); for (int i = 0; i < table.getRowCount(); i++) { headerTable.setValueAt("Row " + (i + 1), i, 0); } headerTable.setShowGrid(false); headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); headerTable.setPreferredScrollableViewportSize(new Dimension(50, 0)); headerTable.getColumnModel().getColumn(0).setPreferredWidth(50); headerTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable x, Object value, boolean isSelected, boolean hasFocus, int row, int column) { boolean selected = table.getSelectionModel().isSelectedIndex(row); Component component = table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table, value, false, false, -1, -2); ((JLabel) component).setHorizontalAlignment(SwingConstants.CENTER); if (selected) { component.setFont(component.getFont().deriveFont(Font.BOLD)); component.setForeground(Color.red); } else { component.setFont(component.getFont().deriveFont(Font.PLAIN)); } return component; } }); table.getRowSorter().addRowSorterListener(new RowSorterListener() { @Override public void sorterChanged(RowSorterEvent e) { model.fireTableDataChanged(); for (int i = 0; i < table.getRowCount(); i++) { headerTable.setValueAt(table.getValueAt(i, 0), i, 0); } } }); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { model.fireTableRowsUpdated(0, model.getRowCount() - 1); } }); TableColumnModel columnModel = table.getColumnModel(); TableColumn column = columnModel.getColumn(0); column.setMinWidth(0); column.setMaxWidth(0); column.setPreferredWidth(0); AdjusterTableColumn columnAdjuster = new AdjusterTableColumn(table); columnAdjuster.adjustColumns(); scrollPane = new JScrollPane(table); scrollPane.setRowHeaderView(headerTable); table.setPreferredScrollableViewportSize(table.getPreferredSize()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.add(scrollPane); frame.add(new JButton(new AbstractAction("Toggle filter") { private static final long serialVersionUID = 1L; private RowFilter<TableModel, Object> filter = new RowFilter<TableModel, Object>() { @Override public boolean include(javax.swing.RowFilter.Entry<? extends TableModel, ? extends Object> entry) { return ((Number) entry.getValue(1)).intValue() % 2 == 0; } }; @Override public void actionPerformed(ActionEvent e) { if (sorter.getRowFilter() != null) { sorter.setRowFilter(null); } else { sorter.setRowFilter(filter); } } }), BorderLayout.SOUTH); frame.pack(); frame.setLocation(150, 150); frame.setVisible(true); } public static void main(String[] args) { try {// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if (info.getName().equals("Nimbus")) { UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (Exception e) { //e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { @Override public void run() { JTableRowHeader TestTableRowHeader = new JTableRowHeader(); } }); } }