JTableHaeder默认没有"按下"突出显示.(雨云)
NimbusDefaults表示它有一个默认的[Pressed]背景画家.
当我点击TableHeader时,我该怎么办?
更新1
在NimbusStyle.getExtendedState
返回压在鼠标按下正确.但是NimbusStyle.getBackgroundPainter(SynthContext)
返回null
导致CacheKey "backgroundPainter $$实例"null
的NimbusStyle.Values
缓存中存在此状态.
有什么问题?
更新2
我的示例显示了一个JTableHeader和一个带有"Pressed Behavior"的JScrollBar.
对于JScrollBar,我putClientProperty( "Nimbus.State" )
使用重绘问题.
public class Header extends JPanel{
public Header() {
super(new BorderLayout());
JTableHeader header = new JTable(5, 3).getTableHeader();
JScrollBar scroll = new JScrollBar(JScrollBar.HORIZONTAL);
add(header, BorderLayout.NORTH);
add(scroll, BorderLayout.SOUTH);
scroll.addMouseListener( new PressedBehavior() );
header.addMouseListener( new PressedBehavior() );
}
static public void main( String[] s ) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() …
Run Code Online (Sandbox Code Playgroud) 我花了很长时间搜索这个,我只找到了GroupableHeader
代码.我在2列中需要一个超过2列的标题JTable
.如何在不使用臭名昭着GroupableHeader
的情况下完成,同时保持`JTableHeader的默认外观?
这是我想到的图形表示:
_________________________
| Table Header |
|-----------------------|
| | |
|-----------|-----------|
| | |
|-----------|-----------|
Run Code Online (Sandbox Code Playgroud) 我正在构建一个小JTable,并且当选择一个单元格以便更容易地找到该单元格的关联名称时,我想突出显示列标题(和行标题 - 行标题部分实际上正在工作).这是一张图片:
我已经尝试使用以下方法切换标题的渲染器:
table.getTableHeader().setDefaultRenderer(new ColumnHeaderRenderer());
Run Code Online (Sandbox Code Playgroud)
但是只有当我点击标题并且总是说isSelected为false时才会调用它.
这是我用于行名的代码,包括渲染器内的高亮 - 代码不是由我,我只是修改了一下:
/*
* Use a JTable as a renderer for row numbers of a given main table.
* This table must be added to the row header of the scrollpane that
* contains the main table.
*/
public class RowNameTable extends JTable
implements ChangeListener, PropertyChangeListener {
private JTable main;
public RowNameTable(JTable table) {
main = table;
main.addPropertyChangeListener(this);
setFocusable(false);
setAutoCreateColumnsFromModel(false);
setModel(main.getModel());
setSelectionModel(main.getSelectionModel());
TableColumn column = new TableColumn();
column.setHeaderValue(" ");
addColumn(column);
column.setCellRenderer(new RowNameRenderer(main)); …
Run Code Online (Sandbox Code Playgroud) 我需要为a的几列分配固定宽度JTable
,然后为所有其他列分配相等的宽度.
假设a JTable
有5列.第一列宽度应为100,第二列宽度为150.如果JTable
在设置两列宽度后剩余宽度为600,我希望将其均匀分割为其他三列.
问题是table.getParent().getSize().width
通常为0,即使它被添加到JFrame
和可见,所以我不能用它作为基础.
我该怎么做呢?
我有一个JTable,我填充了一个扩展AbstractTableModel的类.问题是列太短而无法显示列名.我已经关闭了Jtable AutoResizeMode属性,但仍然会发生缩短.我该如何解决这个问题?
是否可以添加ActionListener
到列标题JTable
.
这是我的桌子
现在,我想的添加ActionListener
到列标题(例如WQE
,SDM
)我想是能够显示在另一个窗口中列描述.
如何使JTableHeader可编辑.我将ColumnHeader作为JTextField.我该怎么做才能使JTextField可编辑.看例子:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class Test extends JFrame {
String[][] cellValues = { { "v00", "v01", "v02" }, { "v10", "v11", "v12" },
{ "v20", "v21", "v22" }, { "v30", "v31", "v32" },
{ "v40", "v41", "v42" }, { "v50", "v51", "v52" } };
String[] columnNames = { "v00", "v01", "v02" };
javax.swing.JTable jTable1 = new javax.swing.JTable(cellValues, columnNames);
public Test() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
} …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了大多数JTable/JComboBox对此类其他问题的回复,但还没有找到解决我问题的方法.
我创建了一个具有JComboBox TableHeader元素的表.没有任何JComboBox元素将打开以显示项目列表.如何获取要显示的各个JComboBox元素的项目列表?
请注意,此问题的一个显着特征是JComboBox位于TableHeader中,未嵌入JTable单元中.
任何帮助表示赞赏.
SSCE
import java.awt.Component;
import java.awt.Dimension;
import java.util.Enumeration;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class ComboHeaderTest extends JScrollPane {
private static final Dimension DEFAULT_SIZE = new Dimension(200, 200);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ComboHeaderTest().initComponents();
}
});
}
private ComboHeaderTest() {
final String[][] data = { {"Header 1", "Header 2", "Header 3"},
{"A", "B", "C"},
{"D", …
Run Code Online (Sandbox Code Playgroud) 嗨伙计们希望你能帮到我这里,我的代码(逻辑方面)很好唯一的问题是列标题没有显示在2个表格中(表格和表格,一个用于教师,一个用于学生详细信息) )我怎么让它们显示?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Display
{
ArrayList<Student> stud1 = new ArrayList<Student>();
ArrayList<SubjectTeacher> sTeach1 = new ArrayList<SubjectTeacher>();
//For Display Teachers
private JTable table;
private JFrame f;
private int i;
//For DisplayStudents
private JTable tableS;
private JFrame fS;
private int iS;
//Displays Teachers
public void displayTeachers()
{
f = new JFrame("Teachers");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,400);
f.setVisible(true);
String[] columnNames = {"Name", "Surname", "ID", "Pay", "Subject"};
sTeach1 = Stores.getTeach();
i = sTeach1.size();
Object[][] data = new …
Run Code Online (Sandbox Code Playgroud) 我有两个JTables
,一个在主视口,一个在页脚视口,使用JideScrollPane
. 问题是当 mainJTable
的视图被自定义时,页脚JTable
保持不变,有什么方法可以同步它们的视图吗?
谢谢。
java ×10
jtableheader ×10
swing ×10
jtable ×8
highlight ×1
jcombobox ×1
jide ×1
jscrollpane ×1
nimbus ×1
percentage ×1
text-size ×1