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

Java摆动按钮定位

景承教
2023-03-14
BufferedImage image = ImageIO.read(images.get(number));
JPanel panel = new JPanel() {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, null);
    }
};
if (currentPanel != null) {
    this.remove(currentPanel);
}
panel.setSize(Gallery.this.getSize());
currentPanel = this.add(panel);
jButton1.setBounds(Gallery.this.getWidth() - jButton1.getWidth(), 0, jButton1.getWidth(), jButton1.getHeight());
panel.add(jButton1);
currentPanel.repaint();

此代码在启动时执行一次。然后JButton位于中间。加载下一个图像时再次执行,此时JButton已处于正确位置。

我已经尝试了很多方法,比如将JButton添加到JFrame中,将JPanels布局设置为null(使button不可见),重新绘制、打包、无效,但我尝试的一切似乎都不奏效。有人能指示Swing把那个JButton放在我的JFrame的右上角吗?非常感谢!

共有1个答案

钱繁
2023-03-14

在清理了我在那里编程的混乱之后,一个简单的解决方案被证明是有效的:我在启动时向JFrame添加了一个自定义的JPanel,并为JButton设置了一个固定的宽度。这里的jPanel:

public class ImagePanel extends javax.swing.JPanel {
Image image;

public Image getImage() {
    return image;
}

public void setImage(Image image) {
    this.image = image;
}

public ImagePanel() {
    initComponents();
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 0, 0, this);
}                  

}

我为JButton设置了一个固定宽度,并将其添加到JPanel中:

    jButton1 = new JButton();
    jButton1.setText("Exit");
    imagePanel = new ImagePanel();
    imagePanel.setSize(Gallery.this.getSize());
    add(imagePanel);
    imagePanel.add(jButton1);
    jButton1.setBounds(Gallery.this.getWidth() - 50, 0, 50, 30);
    jButton1.addActionListener((ActionEvent e) -> exit());
    displayImage(0);
 BufferedImage image = ImageIO.read(images.get(number));
 imagePanel.setImage(image);
 imagePanel.repaint();
 类似资料:
  • 在创建自定义JButton(即图像)时遇到问题。我使用普通的JButton(就像第2行的注释中那样)进行所有操作,这样我就不必获得输入流,并且启动按钮时有一个图标。我遇到的麻烦是,当我按下“重放”按钮(再次播放)时,窗口关闭,只有一个窗口应该弹出(就像“普通”JButton发生的那样),但在这种情况下,有4-5个窗口重新打开,我不知道为什么。 我开始认为这是因为获得并执行的时间,游戏将启动,并看到

  • 问题内容: 我想要一个带有2个按钮(最终还有更多个按钮)的JFrame应用程序,我可以使用它们在多个重复动作之间进行切换,为简便起见,我现在仅使用控制台打印,尽管稍后可能会调用一个方法。这是JFrame的框架: 我尝试了以下方法: 但是当我单击一个按钮后,它一直停留在该打印件上,我什至无法再与这些按钮进行交互。我是否缺少某些东西,还是需要一个完全不同的结构?我已经检查了很多不同的程序,但是它们太复

  • 问题内容: 基本上,我在主代码中的某处有这行代码 这行代码将打开一个新的JFrame,它基本上可以编辑来自主类的大量信息。我有2个名为“保存”和“取消”的按钮。单击“保存”后,我想从文本字段中获取值,然后将其放入新对象中,然后将其返回给主类,然后关闭窗口。单击取消时,我希望它什么都不做,这很简单。 提前致谢。 问题答案: 不要将窗口显示为JFrame,而是将其显示为模式对话框。然后,在不再可见后,

  • 问题内容: 我正在尝试创建一些用于特定目的的特殊组件,在该组件上我需要绘制HTML字符串,这是示例代码: 不幸的是,drawString方法似乎无法识别HTML格式,它愚蠢地按原样绘制字符串。 有什么办法可以使这项工作吗? 问题答案: 我找到了一种简洁的模拟方法; 这是代码:

  • 我在JPanel中有一个动画,它通过javax.swing.Timer更新自己。如果我让JPanel每秒更新60次,我会将延迟设置为1000/60 = ~16.6666。然而,这个延迟必须是一个整数,所以我可以选择向上或向下取整。对于16毫秒的延迟,动画将以每秒62.5帧的速度更新。向上舍入到17毫秒延迟将给出58.824的帧速率。 我怎样才能达到每秒60帧的帧速率呢? 提前谢谢。

  • 浮动操作按钮 运行方式 过渡 大屏幕 浮动操作按钮 浮动操作按钮 浮动操作按钮适用于进阶的操作。它是漂浮在 UI 上的一个圆形图标,具有一些动态的效果,比如变形、弹出、位移等等。 浮动操作按钮有两种尺寸: 默认尺寸:适用于多数应用情况。 迷你尺寸:仅用于创建与其他屏幕元素视觉的连续性。 浮动操作按钮 迷你浮动操作按钮 浮动操作按钮应至少放在距手机边缘 16dp 或电脑/台式机边缘 24dp 的地方