JButton 在鼠标悬停之前不可见

2023-12-07

我正在为我的项目创建一个图形用户界面。当 gui 首次加载时,只有背景可见,因此按钮不可见,但当鼠标悬停在按钮上时,它们是可见的。解决这个问题的办法是什么?

public class Home extends JFrame{
//New JPanel 
private JPanel home;

//Creating image url. You must be change url
ImageIcon icon = new ImageIcon("img//home1.jpeg");

//Home Class
public Home(){

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 960, 640);
    setTitle("LoneyTunes Crush");
    home = new JPanel();
    home.setBorder(new EmptyBorder(5, 5, 5, 5));
    home.setLayout(new BorderLayout(0, 0));
    setContentPane(home);

    getContentPane().setLayout(null);
    JLabel background = new JLabel(new ImageIcon("img//giphy."));
    getContentPane().add(background);
    background.setLayout(new FlowLayout());

        //Creating Buttons
    JButton play = new JButton("Play");
    play.setBounds(20, 20, 200, 30);
    JButton setting = new JButton("Settings");
    setting.setBounds(20, 60, 200, 30);
    JButton exit = new JButton("Exit");
    exit.setBounds(20, 100, 200, 30);
       //Adding Buttons
    home.add(play);
    home.add(setting);
    home.add(exit);

            //ActionListeners
    play.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
               home.setVisible(false);
               difficulty.setVisible(true);

            }

          });

    exit.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            System.exit(1);   

            }

          });


    validate();


}

//Background paint method
public void paint(Graphics g){

    g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), null);


}   

}

主班

public class MainClass {
public static Home pencere;

public static void main(String args[]){
    pencere=new Home();
    pencere.setVisible(true);
}

}


  1. Don't在顶层容器上绘画,例如JFrame因为他们已经承担了绘制所有组件的重担。

  2. 而是涂上JPanel or JComponent and Override it's paintComponent method.

  3. 在重写之上paintComponent(或者在你的情况下paint),你还需要打电话super.paintComponent(在你的情况下super.paint)在方法内部(首先在方法签名下调用),以免破坏绘制链。如果不这样做,可能会给您留下不想要的绘画伪影。

  4. 出于多种原因,避免使用空布局。不同的平台会以不同的方式对待他们。除许多其他原因外,它们难以维护。相反,使用布局管理器,让它们进行组件的布局和大小调整,就像它们设计用于 Swing 应用程序一样。了解更多信息,请访问在容器内布置组件

  5. Setting Home pancere as a static的班级成员MainClass完全没有意义。只需在中声明并实例化两者main method.

  6. Swing 应用程序应在事件调度线程 (EDT) 上运行。您可以通过将代码包装在您的main方法与SwingUtilities.invokeLater...。更多信息请访问初始线程

  7. 不要尝试使面板可见和不可见或添加可删除面板,而是考虑使用CardLayout这将"layer"面板,您可以使用以下命令浏览它们CardLayout的方法如show(), next(), previous()。更多信息请访问如何使用卡片布局

  8. 在部署时,您正在使用的图像将需要成为嵌入式资源,并且应该从类路径加载,而不是从文件系统加载。当你传递一个字符串到ImageIcon,您告诉程序查看文件系统,这可能在您的开发环境中工作,但仅此而已。请参阅 wiki 标签嵌入式资源如果信息没有提供足够的详细信息,请密切注意最后一个链接,该链接将为您提供一些有关如何使用和加载嵌入式资源的资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JButton 在鼠标悬停之前不可见 的相关文章

随机推荐

  • 自定义多色进度条

    我的应用程序要求是自定义进度条 具有多色指示的自定义进度 例如 小于 30 的进度用绿色显示 小于 60 和大于 30 的进度用黄色显示 最后从 60 到 100 的进度用红色显示 我想要这样的进度条 http www android2fr
  • Cesium - 使用相机缩放多边形以在放大/缩小时匹配经纬度位置

    我正在努力解决相机功能 我认为 可以提供一种方法强制我的多边形粘在我房子的顶部缩小 放大和旋转 或相机移动 这个问题遵循较早的question问题已解决 现在我需要一点帮助来解决我的下一个问题 我试图遵循的示例代码位于黄金标准似乎已融入现有
  • 使用 create-react-app 的多个入口点

    我的页面包含 20 的 React 组件和 80 的普通 html 内容 有必要在页面的不同位置放置多个React组件 因此我需要在index html中使用多个入口点 我想使用create react app 但我不想使用redux 因为
  • Magento - 在管理中不可见/不可编辑的产品属性

    是否可以通过代码 或手动 创建通过管理编辑产品页面不可见 因此不可编辑 的产品属性 如何 该属性只需要在php模块中使用 保存 加载 对的 这是可能的 如果您在安装脚本中执行此操作 您应该设置 visible 为假 installer gt
  • 如何建立友谊关系模型

    我一直在试图弄清楚如何做到这一点 即使查看其他示例 我也无法弄清楚 所以也许我可以获得一些个性化的帮助 我有两张桌子users status and friendships In the users status表我有一个字段userid
  • 如何修复React中的map is not a function错误?

    我遇到错误 map is not a function进行 API 调用时 我不久前才开始学习 React 和 API 我尝试将状态更改为对象 但未定义 因为 我得到的地图不是一个函数 也许我缺少调用 API 的东西 这是下面的代码 fun
  • 在ABAP中找到两个数据集的差异?

    我有一组值 foo bar blue 我有一个看起来像这样的表 ID my col 1 foo 2 bar 我想要设置值减去所有可用的 my col 值 foo bar blue 减去 foo bar 结果应该是 蓝色 在ABAP中如何做到
  • Jade Templates - 动态调用 Mixin

    如何使用 json 中的字符串输入 Jade 模板来动态加载 mixin 下面 目标是twoColumn jade加载foo and bar mixins 两列 jade mixin twoColumns obj container flu
  • AngularJS -$compileProvider.preAssignBindingsEnabled 不是一个函数

    我在尝试执行以下操作时收到以下错误消息gulp serve在我的 AngularJS 10 6 1 版 应用程序上 Error injector modulerr Failed to instantiate module myAppName
  • MS-DOS 如何获取命令的输出作为变量

    我编写了一个程序 该程序将 DOS 的键码作为整数返回 但我不知道如何将其输出作为变量 注意 我使用的是 MS DOS 7 Windows 98 所以无法使用FOR F or SET P 有谁知道我该怎么做 Eric Pement 描述了一
  • 如何在转换中使用枢轴点

    如何使用中心点平移对象 我有一个矩形 其中心点远离矩形的位置 当我旋转矩形时 它绕其中心轴旋转 如果我在 modelView 矩阵中旋转之前乘以位置 ModelViewMatrix Rotation Scaling Position 假设我
  • 在 StoryBoard 上设置自定义附加属性

    我有一个故事板 想要设置附加属性 VisualStateUtility InitialState 我尝试过各种组合 但属性从未得到解决 我收到以下错误 无法解析 TargetProperty VisualStateUtility Initi
  • 在 Ruby 中使用 new 运算符对自动激活哈希值进行多重初始化

    我想初始化几个自动激活哈希值通过一行表达式 到目前为止 我找到了一种额外的方法AutoHash object class AutoHash lt Hash def few n 0 Array new n AutoHash new end 这
  • Angular 2 rc5,使用注入的管道的单元测试问题

    我正在使用 angular2 rc 5 我编写了一个自定义管道 可以从 json 中获取值 自定义管道 literal pipe ts 看起来像 import Pipe PipeTransform Inject from angular c
  • 在从加载标签的视图扩展的页面上使用 Django template_tag

    我已向我的应用程序添加了一个模板标签 我将其加载到位于的视图中inc base html 该视图包含我的基本 HTML 布局 我所有其他观点开始 extends inc base html 在我的视图之一中 我想引用我的模板标签 该标签加载
  • 使用三个 CSG 进行 3D 布尔运算

    按照此处的示例 http learning Threejs com blog 2011 12 10 constructive solid geometry with csg js 并使用 Three js 与https github com
  • cellDoubleClicked 文本 python

    我在使用 PyQt5 时遇到一个问题 我已经制作了一个 QTableWidget 它显示我之前在 pandas 中制作的 DataFrame 来自电子表格 我尝试做的不成功的事情是 从用户双击的单元格中获取文本 以便我可以使用该信息根据所做
  • 所有图像加载后如何发出警报?

    我正在构建一个 JavaScript 游戏 我想在加载所有图像后发出警报 我尝试了这段代码 但它不起作用 function loadEveryThing var imgNumber 0 img1 new Image img1 src 1 p
  • “#”附近的语法不正确。带有 SQL 数据库的 VB.net

    我正在尝试使用以下代码获取日期 今天的 Max 字段 Dim todaydate Format Today Date dd MM yyyy Dim sql1 As String Select max snum From tblbill wh
  • JButton 在鼠标悬停之前不可见

    我正在为我的项目创建一个图形用户界面 当 gui 首次加载时 只有背景可见 因此按钮不可见 但当鼠标悬停在按钮上时 它们是可见的 解决这个问题的办法是什么 public class Home extends JFrame New JPane