java - JTabbedPane setTabComponent
问题描述
老实说,我不确定我是否发现了错误或我的代码有问题。我正在尝试为简单的 Web 浏览器实现实现一些 JTabbedPane 选项卡。Java 参考似乎很简单,但我得到了不稳定的行为;选项卡不会通过 jtabbedpane.remove(index) 调用关闭。
我们希望行为类似于此链接中的第二个示例:
https://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html
调用 jtabbedpane.remove(index) 失败,标签数量不同步;我关闭一个,计数保持不变。我不确定验证应该在 Java 代码中的什么位置。
这是个人项目,不是工作。
public class CustomJButton___CloseTabJButton extends JButton
{
public Integer index;
public CustomActionListener listener = new CustomActionListener();
public CustomJButton___CloseTabJButton()
{
this.addActionListener(listener);
setPreferredSize(new Dimension(17,17));
setToolTipText("Close this tab");
setContentAreaFilled(false);
}
//paint the cross
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
//shift the image for pressed buttons
if (getModel().isPressed()) {
g2.translate(1, 1);
}
g2.setStroke(new BasicStroke(2));
g2.setColor(Color.BLACK);
if (getModel().isRollover()) {
g2.setColor(Color.MAGENTA);
}
int delta = 6;
g2.drawLine(delta, delta, getWidth() - delta - 1, getHeight() - delta - 1);
g2.drawLine(getWidth() - delta - 1, delta, delta, getHeight() - delta - 1);
g2.dispose();
}
public class CustomActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
CustomJTabbedPane jtabbedpane = (CustomJTabbedPane) Bodhi.pull(new Name("//jtabbedpane"));
int closureindex = jtabbedpane.indexOfTabComponent(CustomJButton___CloseTabJButton.this);
int selectedtabindex = jtabbedpane.getSelectedIndex();
int tabcount = jtabbedpane.getTabCount();
//int tabcount2 = jtabbedpane.getTabRunCount();
System.out.println("ClosureIndex "+closureindex);
System.out.println("SelectedTabIndex "+selectedtabindex);
//System.out.println("Tabcount 2"+tabcount2+"\n");
if(closureindex != -1)
{
jtabbedpane.setSelectedIndex(closureindex);
jtabbedpane.removeTabAt(closureindex);
jtabbedpane.invalidate();
jtabbedpane.revalidate();
System.out.println("Tabcount "+tabcount);
}
}
}
}
解决方案
推荐阅读
- tensorflow - ValueError: Tensor("cnn/conv2d/kernel:0", shape=(), dtype=resource) 必须与 Tensor("Placeholder:0", shape=(), dtype=variant) 来自同一个图
- python - 将字节转换为列表
- python - 在 jupyter、Python 3.x 中使用 numpy.linspace() 时出错
- python - 程序完成后如何打开excel文件
- arrays - Ruby 将活动记录或对象数组转换为哈希数组
- kotlin - 如何从 Exposed 中的 QueryAlias 映射 count() 值
- python - 当用户在 Tkinter 条目小部件中输入表情符号时,在条目上调用 .get 时会引发异常
- php - 在产品元数据中去除 HTML
- java - 使用换行符时 Java GZIP 文件损坏
- react-native - 在 React Navigation 5 中访问导航道具