1
A
答えて
4
ここに私の試みです:JTable
が最初のセル以外のセルと、間に垂直線を描画していない
- セットは、左の縦線を描画するために
Border
を設定します。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
public class TableGridLineTest {
public JComponent makeUI() {
JTable table = new JTable(5, 3);
table.setAutoCreateRowSorter(true);
table.setFillsViewportHeight(true);
table.setShowVerticalLines(false);
//table.setShowHorizontalLines(false);
table.setIntercellSpacing(new Dimension(0, 1));
table.setBorder(BorderFactory.createEmptyBorder());
table.getTableHeader().setBorder(BorderFactory.createEmptyBorder());
table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer() {
private final CellBorder border = new CellBorder(2, 2, 2, 2);
@Override public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JLabel c = (JLabel) super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
border.isStartCell = column == 0;
c.setBorder(border);
c.setBackground(Color.ORANGE);
return c;
}
});
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
private final CellBorder border = new CellBorder(2, 2, 2, 2);
@Override public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JComponent c = (JComponent) super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
border.isStartCell = column == 0;
c.setBorder(border);
return c;
}
});
JScrollPane scroll = new JScrollPane(table);
scroll.setBorder(BorderFactory.createLineBorder(Color.ORANGE));
JPanel p = new JPanel(new BorderLayout());
p.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 20));
p.add(scroll);
return p;
}
public static void main(String... args) {
EventQueue.invokeLater(() -> {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new TableGridLineTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
});
}
}
class CellBorder extends EmptyBorder {
private final Color gridColor = UIManager.getColor("Table.gridColor");
public boolean isStartCell = false;
protected CellBorder(int top, int left, int bottom, int right) {
super(top, left, bottom, right);
}
@Override public boolean isBorderOpaque() {
return true;
}
@Override public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
Graphics2D g2 = (Graphics2D) g.create();
g2.translate(x, y);
g2.setPaint(gridColor);
if (!isStartCell) {
g2.drawLine(0, 0, 0, h - 1); // Left line
}
g2.dispose();
}
}
関連する問題
- 1. QTableViewの垂直グリッド線を削除
- 2. wxgrid上の水平グリッド線を削除します
- 3. jQPlot - 垂直グリッド線を削除する
- 4. jTableグリッド線の選択された行
- 5. jtableテーブルモデルクローンからデータの列を削除
- 6. Htaccess - 内線番号を削除する
- 7. jtableからAbstractActionを削除します。
- 8. アンドロイドでrectangeの横の線の一部を削除します
- 9. 剣道グリッドのヘッダーの罫線を削除する
- 10. UIButtonの右と左の罫線を削除するには?
- 11. Pythonのメッシュ/グリッド線を削除するpcolorベースマッププロット
- 12. WindowsFormのChartからグリッド線を削除する方法は?
- 13. セル内のデータを含むセルのグリッド線の追加/削除
- 14. UIグリッドのグリッドメニューから列を削除します。
- 15. JTableの列見出しの枠線を削除するにはどうすればよいですか?
- 16. リストの一番下からliを削除します
- 17. 「列」フォームを削除するDojoXグリッド1.2
- 18. Java- JTableがグリッド線を表示しない
- 19. gridpanel右クリックして列を削除します
- 20. C#でグリッド線を削除するグラフと太いグラフ線を作成する
- 21. 複数列のキーを持つ行をJTableで削除する
- 22. 削除divの右
- 23. Winforms Chartからグリッド線を削除する
- 24. MathJax Equationsは右に垂直線を表示します。削除方法は?
- 25. 他のクラスからjTable列を削除する方法
- 26. 剣道グリッド行フィルタで2番目のクリアボタンを削除
- 27. 剣道UIグリッド - グループ列を削除しますか?
- 28. JavaスイングのJTableからチェックボックスを削除します
- 29. コピーペーストデータをリッチテキストボックスに追加+グリッド線を削除
- 30. in JTable画像間のスペースを削除
私は、あなたのソリューションを愛してありがとう!私は私自身のBasicTableUI.paintGrid()を作成し、次にテーブルヘッダについて何かをしなければならないかもしれないと思っていましたが、あなたのソリューションは完全に動作します:) – dosa