相关疑难解决方法(0)

Java Swing revalidate()vs repaint()

我正在整理一个Swing应用程序,我常常想要替换JPanel的内容.要做到这一点,我正在打电话removeAll(),然后添加我的新内容,然后打电话revalidate().

但是我发现旧内容仍然可见(虽然被新内容遮挡了).如果我添加调用repaint()revalidate(),它按预期工作.

我确信在其他场合我经历过只是打电话revalidate()就足够了.

所以基本上我的问题是 - 我是否需要调用这两个函数,如果没有,我什么时候应该调用它们?

java swing

206
推荐指数
4
解决办法
21万
查看次数

无法显示选项卡式JTable的表头

我有一个JTabbedPane,其选项卡中包含三个表.的JTabbedPane,再次,是在JScrollPane.我想{"Client", "Action", "Location", "Value"}为每个表显示一个修复表头,它遵循模式.当我试图设置标题时ActionListener(见下文),我可以自由地使用其他方法(例如,最初设置标题).

其他SO帖子也解决了同样的问题,但我无法显示表头.唯一有效的方法是在上述表格中添加数据ActionListener.我不明白为什么标题没有显示,因为我将数据以String-matrix的形式与String表示标题的-array一起传递.

首先,这里是关于我的表的代码片段,它在GUI启动时执行(my initialize()-method).

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
    tabbedPane.setFont(new Font("Carlito", Font.PLAIN, 13));
    tabbedPane.setBackground(Color.WHITE);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

    tableBefore = new JTable();
    tabbedPane.addTab(descrTableBefore, null, tableBefore, null);
    tableBefore.setFont(new Font("Carlito", Font.PLAIN, 13));
    tableBefore.setFocusable(false);

    tableMainTest = new JTable();
    tabbedPane.addTab(descrTableMain, null, tableMainTest, null);
    tabbedPane.setEnabledAt(1, true);
    tableMainTest.setFont(new Font("Carlito", Font.PLAIN, 13));
    tableMainTest.setFocusable(false);

    tableAfter = new JTable();
    tabbedPane.addTab(descrTableAfter, null, tableAfter, null);
    tableAfter.setFont(new Font("Carlito", Font.PLAIN, 13)); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtabbedpane jtableheader

2
推荐指数
1
解决办法
334
查看次数

标签 统计

java ×2

swing ×2

jtabbedpane ×1

jtable ×1

jtableheader ×1