gpt4 book ai didi

java - 在 JAVA 中,JButton,Button 仅在光标位于按钮上时显示,甚至在单击 contentPane 中的任意位置时也能正常工作

转载 作者:行者123 更新时间:2023-11-30 05:50:29 25 4
gpt4 key购买 nike

总体而言,我是 Java 和 OOPS 的初学者。我从 Head First Java 开始学习,并研究其中的 GUI 和 Swing 概念。以下代码仅用于理解目的。

运行代码时,框架窗口显示有按钮,当我展开它时,我也可以看到单选按钮。

问题-

  1. 按钮工作直到窗口大小不超过按钮大小。只要我增加窗口大小甚至比按钮的尺寸略大,按钮就会仅在光标位于其上时显示。

我正在使用鼠标更改窗口大小。

  1. 即使我将帧大小设置为大于按钮。说 frame.setSize(800,800);然后按钮覆盖整个 contentPane。并且在调整大小时仍然表现相同。

  2. 无论我在 contentPane 中的哪个位置单击鼠标,该按钮都会响应鼠标单击。只有当我直接点击按钮时它才会响应。

请告诉我为什么会这样。

如果可能,请更正代码或添加内容以更正此问题。

import java.awt.Color;
import javax.swing.*;
import java.awt.event.*;
public class Test1 implements ActionListener {

JFrame frame = new JFrame("Frame");
JButton button = new JButton("Button!");
JRadioButton radio = new JRadioButton("VideoKilledTheRadioStar!",true);
int j=0;


public static void main(String[] args) {
Test1 t = new Test1();
t.method1();

}
public void method1()
{

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.setSize(100,100);
button.setBackground(Color.ORANGE);
frame.add(button);
frame.setSize(100,100);
frame.setVisible(true);
button.addActionListener(this);
frame.getContentPane().add(radio);
radio.addActionListener(this);

}
public void actionPerformed(ActionEvent e)
{j++;
button.setText("clicked .. " + j);

if(button.getBackground()==Color.ORANGE)
button.setBackground(Color.BLUE);
else
button.setBackground(Color.ORANGE);
}

}

P.S 我不知道哪段代码对这个问题重要或更相关,所以我放了完整的代码。

最佳答案

您正在尝试添加 JButton按钮和 JRadioButton BorderLayout 的默认布局 ( JFrame ) 中的对象.

每当您向具有 BorderLayout 的 JFrame 添加组件时组件进入中间部分和BorderLayout中心部分往往会占据整个空间,因此要正确定位元素,您需要指定位置并设置组件的 PreferredSize。

frame.add(radio, BorderLayout.SOUTH);
component.setPreferredSize(Dimension);

关于java - 在 JAVA 中,JButton,Button 仅在光标位于按钮上时显示,甚至在单击 contentPane 中的任意位置时也能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com