如果查詢後沒有結果,如何在JTable內顯示居中文本或類似內容? 謝謝大家。JTable中居中的JLabel
1
A
回答
2
我不會顯示標籤裏面的這個JTable,但是代替了這個JTable。
嘗試從其容器中刪除表格元素,然後添加帶有消息的Jlabel。
當用戶運行另一個查詢,取得了積極的效果,在相反的方向(移除標籤,添加表)
1
只需添加文本模式,你會noramlly做,然後創建一個自定義呈現。喜歡的東西:
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(JLabel.CENTER);
table.getColumnModel().getColumn(???).setCellRenderer(centerRenderer);
或者,如果你想爲中心,包含字符串數據中的所有列,那麼你可以使用
table.getDefaultRenderer(class.String);
,然後重置該渲染器的校準。
編輯:我誤解了這個問題。
如果您只想在表中顯示一條消息,則可以將該表的TableModel更改爲僅顯示帶有單行的單列表並顯示錯誤消息。此列仍然需要使用自定義渲染器。
要重置你只是做了模型:
DefaultTableModel model = new DefaultTableModel(...);
table.setModel(model);
當然,如果查詢是全成,你也必須重新設置新的數據模型,以及。
1
另一種替代方法:如果沒有行,則可以在表格而不是行中真正繪製一些 - 適當定位的文本。爲了實現這一目標
- 子焦耳/ X /表和重寫paintComponent
確保表格被擴展到視口的大小(即tracksViewportHeight是真實的,那是JXTable在默認情況下,必須顯式設置JTable中)
@Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (getRowCount() > 0) return; Component comp = getNoDataRenderer(); CellRendererPane rendererPane = getRendererPane(); Dimension size = getSize(); Dimension prefSize = comp.getPreferredSize(); Rectangle rect = new Rectangle((size.width - prefSize.width)/2, size.height/4, prefSize.width, prefSize.height); rendererPane.paintComponent(g, comp, this, rect); } private Component getNoDataRenderer() { if (noDataRenderer == null) { noDataRenderer = createNoDataRenderer(); } String localizedNoData = UIManager.getString("noData"); Component comp = noDataRenderer.getTableCellRendererComponent(this, localizedNoData != null ? localizedNoData : "No Data Available", false, false, -1, -1); Font bigger = getFont().deriveFont(Font.BOLD | Font.ITALIC, getFont().getSize2D() * 2); comp.setFont(bigger); return comp; } private DefaultTableCellRenderer createNoDataRenderer() { DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setForeground(Color.GRAY); return renderer; } private CellRendererPane getRendererPane() { for (int i = 0; i < getComponentCount(); i++) { if (getComponent(i) instanceof CellRendererPane) { return (CellRendererPane) getComponent(i); } } return null; }
優勢,較其他建議(可以說,這是我的2當然美分:):
- 交換機組件(標籤vs表):可能會混淆用戶的不連續視覺效果。一張空桌仍然是一張桌子。
- 特殊的空模型:解決數據領域中的視圖問題是...次優。加上需要特別注意的是不要鬆動真實模型的柱狀態
相關問題
- 1. setAlignmentY未將JLabel居中放在BorderLayout中
- 2. 將JTable的單元居中到JTable的中間
- 3. Java居中多行JLabel文本正確
- 4. 在JPanel上居中定位JLabel
- 5. JTable中JPanel中的JLabel工具提示不起作用
- 6. 將MouseListener設置爲JTable內部的JLabel
- 7. 在桌面應用程序中打印帶JTable的JLabel
- 8. 垂直居中Java中的HTML表格單元格中的文本JLabel
- 9. 使用TextAreaRenderer在JTable單元格中居中對齊文本
- 10. 如何使用NetBeans Gui Builder將JLabel居中?
- 11. Java Swing:如何將JLabel的文本綁定到JTable的選定行中的列?
- 12. JLabel中的方法
- 13. JLabel中的下標
- 14. JLabel中的換行
- 15. 使用顯示從JTable中的文本(數據)每次擊鍵後的JLabel
- 16. 在JTable單元格中添加JLabel時出現的奇怪行爲
- 17. 麻煩用的TableCellRenderer,試圖在JTable中單元格添加一個JLabel(圖)
- 18. JTable中的JSlider
- 19. JScrollPane中的JTable
- 20. JTable中的MouseMotionListener
- 21. Netbeans中的JTable
- 22. JTable中的JFileChooser
- 23. JTable中的JCheckbox
- 24. 的Java JTable中
- 25. JTable中
- 26. JTable中
- 27. JTable中
- 28. JTable中
- 29. JTable中
- 30. 居中還是居中?