【问题标题】:JComponents not drawn correctlyJComponents 未正确绘制
【发布时间】:2016-09-26 21:42:13
【问题描述】:

我正在尝试将组件添加到我的 JPanel,但是它们的大小不正确并且不在正确的位置。这是我的组件代码。

button = new JButton();
button.setSize(100, 100);
button.setLocation(400, 400);
button.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
vm.panel.add(button);

它也在我正在绘制的其他东西的后面,所以它是不可见的(这就是我制作光标十字准线的原因,以查看我的按钮在哪里)。这是我画的。

g.drawImage(ImageIO.read(getClass().getResourceAsStream("/background.jpg")), 0, 0, vm.panel.getWidth(), vm.panel.getHeight(), null);
g.setColor(Color.WHITE);
g.fillRoundRect(200, 200, 880, 560, 100, 100);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.PLAIN, 48));
g.drawString("Login", 575, 300);

【问题讨论】:

  • 首先,绘图时不要加载图像。那会破坏你的表现。第二,你在哪里画画?它应该在paintComponent(Graphics)。可能需要更多代码。
  • @Obicere 糟糕,我没有把它放在paintComponenet 中。组件现在可以正确绘制,但是按钮的大小和位置设置不正确。
  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) 例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。
  • 改变按钮大小的策略: 1) 给它一个不同大小的图标。 2) 缩短或延长它显示的文本,或使用不同的字体大小。 3) 更改margin thickness

标签: java swing


【解决方案1】:

但是按钮的大小和位置设置不正确。

JPanel 的默认布局管理器是 FlowLayout。布局管理器将确定按钮的大小和位置。

所以使用适当的布局管理器来将按钮显示为您想要的方式。

例如,如果您只想将按钮显示在面板的中心,您可以使用 GridBagLayout。

panel.setLayout( new GridBagLayout() );
panel.add(button, new GridBagConstraints());

阅读Layout Managers 上的 Swing 教程以获取更多信息和示例。

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2011-03-11
    相关资源
    最近更新 更多