我有一个JPanel
A 内有标题边框JPanel
B of a JTabbedPanel
C.我有一个刷新A和B内容的方法,它会不时被调用。
不幸的是,A 和 B 的所有项目都及时刷新,但 A 的标题没有刷新。我明确必须切换到另一个选项卡式面板并返回到 C 才能正确显示 A 的标题。为什么?
我正在使用的代码如下:
TitledBorder tmp
= (TitledBorder) this.GroupingProfilePanel.getBorder();
// Resetting header
if ( this.c != null ) {
tmp.setTitle("Set - " + this.c.getName());
} else {
tmp.setTitle("Set");
}
更新标题后,验证您是否调用repaint()
在具有标题边框的组件或其祖先之一上。
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.Date;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.TitledBorder;
/** @see http://stackoverflow.com/questions/6566612 */
public class TitledBorderTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new TitledBorderTest().create();
}
});
}
private void create() {
String s = "This is a TitledBorder update test.";
final JLabel label = new JLabel(s);
final TitledBorder tb =
BorderFactory.createTitledBorder(new Date().toString());
label.setBorder(tb);
JFrame f = new JFrame("Titled Border Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(label);
f.add(new JButton(new AbstractAction("Update") {
public void actionPerformed(ActionEvent e) {
tb.setTitle(new Date().toString());
label.repaint();
}
}), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
System.out.println(tb.getMinimumSize(f));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)