当前位置: 首页 > 知识库问答 >
问题:

如何获得一个摇摆组件的涂漆尺寸?

王嘉木
2023-03-14

当我将Swing组件(比如JButton)添加到JPanel时,它会以“首选大小”呈现。

但是,首选的尺寸实际上比涂上的按钮要大。它周围似乎有一个看不见的边界。

下面是一个带有测试面板的简单框架:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

TestPanel pnl = new TestPanel();
frame.getContentPane().add(pnl);

frame.pack();
frame.setVisible(true);
public class TestPanel extends JPanel {

    JButton btn1 = new JButton("Test1");
    JButton btn2 = new JButton("Test2");

    public TestPanel() {
        this.add(btn1);
        this.add(btn2);
    }

    public void paint(Graphics g) {
        super.paint(g);

        g.setColor(Color.RED);
        Dimension dim = btn1.getPreferredSize();
        g.drawRect(btn1.getX(), btn1.getY(), (int)(dim.getWidth()), (int)(dim.getHeight()));
    }

}

我的问题是,我如何确定绘制按钮的宽度和高度,而不是JButton的PreferredSize?

非常感谢任何帮助,谢谢!

因为我实际上需要它来处理所有的Swing组件,下面是一个包含更多组件的屏幕快照。

共有1个答案

莘羽
2023-03-14

我不认为这是特别的或实际可实现的。

问题是,按钮正在使用“未绘制”区域来绘制其他元素,如焦点高亮。

您可以尝试查看abstractbutton#set/getmargin

 类似资料:
  • 我试图为下面的JSON创建一个swagger文档,但是我得到了下面的错误:带有“type: array”的模式需要一个同级“items:”字段 JSON: 有人能帮我得到这个JSON的招摇博士。 任何帮助都将不胜感激。

  • 问题内容: 对不起,我进行了大量搜索,以查找这3个功能(绘画,重绘,paintComponent)之间如何相互作用,但我不知道。您能准确解释一下它们何时被调用(因为有时java会在没有我问他的情况下调用它),它们到底在做什么,它们之间有什么区别。谢谢 问题答案: 我不确定“ paint”,但是我可以解释repaint()和paintComponent()之间的关系。 根据我在Java方面的有限经验

  • 例: “foo”和“bar”可以是任何字符串键,但它们在键集中应该是唯一的。 我知道,使用Swagger,我可以定义一个对象数组,但这给出了一个不同的API,因为那时我们将拥有如下内容: 我已经阅读了“开放API规范”-“添加地图数据类型支持#38”页面。据我了解,它推荐使用additionalProperties,但似乎并没有回答我的需求(或者说与我使用的Swagger UI 2.1.4不兼容)

  • 我正在尝试验证swagger文件(实际上是我的gradle构建的一部分)。我曾经尝试过使用swagger解析器,但尽管它可以工作,如果swagger根本不进行解析,就会出现错误,但它似乎无法以这种方式捕获问题http://editor.swagger.io/#/做(这就是我要找的。) 当然,这是一个很常见的问题,一定有办法做到这一点? 我所尝试的: build.gradle: 有一些明显问题的简单

  • thoses线有什么问题 “data”属性应该是$ref中给出的模式类型的数组,但这是结果 好的,似乎正确的方法是tu把$ref直接放在items键下,我的问题是使用保留键“status”,那么,我如何在对象模式中使用保留键呢? 在我的客户机模式中,我将属性status放了两次,但我没有看到它已经存在,所以当我更改属性名时,它起作用了,我在想“status”可能是一个保留的关键字。

  • 我想大摇大摆地发布一个json正文,就像这样: 目前,我有这样的定义: 但是数据是在URL中发送的。这里是Swagger提供的生成的curl: 我知道<code>查询</code>关键字不好,但我没有找到POST JSON正文的方法。我尝试了<code>formData</code>,但没有成功。