草庐IT

java - 在 JPanel 上绘画与在 JComponent 上绘画有什么好处?

所以在最近的回答中,有人评论了这个(关于绘画):"Thisisprobablysomekindofillnessof90%ofSwingProgrammers:Whentheymaketheirowncomponent,theyalwaysextendJPanelinsteadofJComponent.Why?"我对编程还很陌生,所以我认为现在称自己为Swing程序员还为时过早,因为我还没有找到自己的定位。但是重写JPanel正是我被教导的方式。因此,我着手寻找评论者提出的“为什么?”问题的答案。这些是我找到的一些答案。Backgroundpaintingismaindifferenc

从 Eclipse 运行时不显示 Java JFrame 窗口

一个很简单的问题。我尝试运行一个非常简单的演示来从Eclipse创建和显示窗口框架,但没有任何反应。没有错误,没有窗口,代码运行完成。我添加了断点并确保代码按预期运行。代码直接来自Java教程(FrameDemo),我只是重命名了包以适合我放置它的位置(此包中的其他代码运行良好):packageui;importjava.awt.*;importjavax.swing.*;/*FrameDemo.javarequiresnootherfiles.*/publicclassFrameDemo{/***CreatetheGUIandshowit.Forthreadsafety,*thism

java - Swing 组件的开源改进或替换

我使用Swing开发了许多桌面Java应用程序,虽然Swing非常强大(一旦您掌握了它),但在很多情况下我希望一些高级组件可以立即使用.例如,我真的很想看到易于使用的组件(无需自己编写,只要有足够的时间我就可以做到),例如:多行标签类似Windows文件资源管理器的图标或缩略图View下拉按钮(类似于Firefox的旧后退按钮)5星评级小部件具有自动历史记录的组合框(如Google上的文本字段)Outlook风格的Accordion式栏等等我知道有几个免费的Swing组件来源,例如SwingLabs,JXTable、JXDatePicker和其他几个的主页。除了Java本身包含的Swi

java - 如何将多个组件添加到 JFrame?

我有一个JFrame。我还有一个扩展Component的Box类。这个盒子类有一个paint方法,可以制作一个填充的矩形。当我将多个这些Box组件添加到我的JFrame时,当我在JFrame上调用repaint时,只会显示最近添加的组件。我查看了布局管理器,但不确定这是否是我想要的。我想要的只是能够在屏幕上任何我想要的地方制作一大堆矩形的动画。(我还尝试创建一个面板,将面板添加到JFrame,然后将所有Box组件添加到面板。这也没有用)。提前致谢! 最佳答案 您有2个选择。您可以更改框架的布局:JFrameframe;frame.s

java - 如何改变图像的亮度

我的问题:我希望能够更改资源图像的亮度并将其作为ImageIcons的三个实例。一个亮度为50%(太暗),另一个亮度为75%(稍微亮一点),最后一个亮度为100%(与原始图像相同)。我还想保持透明度。我的尝试:我四处搜索,看起来最好的解决方案是使用RescaleOp,但我就是想不通。我不知道scaleFactor和offset是什么意思。这是我尝试过的代码。publicvoidinitialize(StringimageLocation,floatregularBrightness,floatfocusedBrightness,floatpressedBrightness,String

java - 覆盖 getPreferredSize() 会破坏 LSP

我总是在这个网站上看到覆盖getPreferredSize()而不是使用setPreferredSize()的建议,如这些先前线程中所示。UseofoverridinggetPreferredSize()insteadofusingsetPreferredSize()forfixedsizeComponentsShouldIavoidtheuseofset(Preferred|Maximum|Minimum)SizemethodsinJavaSwing?OverridingsetPreferredSize()andgetPreferredSize()看这个例子:publicclassM

java - 在 Swing Java 中向 JList 添加元素

我有一个在单击按钮时执行的函数。假设有一个循环将1加到10到JList。我将该数据添加到DefaultListModel。它完美地工作并且数字被添加。然后我在循环中添加了一个Thread.sleep(1000)。但是输出是不同的。我想每秒添加1个元素。但现在它等待10秒,并在第10秒结束时将所有1加到10。我哪里错了吗?ListprocessList=listNumbers.getSelectedValuesList();DefaultListModelresultList=newDefaultListModel();listResult.setModel(resultList);fo

java swing 键绑定(bind) - 缺少释放键的操作

注册了“SPACE”和“releasedSPACE”的键绑定(bind),当空格是唯一按下/释放的键时,它的工作方式与广告一样,我注意到按下空格,然后按下ctrl(或任何其他修改键),然后释放空间最后释放ctrl将导致执行与“SPACE”关联的操作,但不会执行与“releasedSPACE”关联的操作。一旦不再按下空格(或同时按下修改键),导致执行操作的首选方法是什么?我只在64位Windows7上试过这个。importjavax.swing.SwingUtilities;importjavax.swing.JFrame;importjavax.swing.JPanel;importj

java - 何时使用 SwingUtilities.invokeAndWait/invokeLater

我在某处读到,对于任何影响gui视觉效果的线程,它都应该使用SwingUtilities.invokeAndWait/invokeLater在EDT中运行对于基本的gui,是否有必要使用invokeAndWait在EDT的行中放置类似newSwingGUI().setVisible(true);的内容?只是为了展示?这个算吗? 最佳答案 对您的问题的简短回答是:是的,即使调用setVisible也应该在EDT上发生。要找出当前线程是否是EDT,可以使用EventQueue#isDispatchThread方法一些引用链接:Multi

java - 如何在 JFrame 中使用 KeyListener?

因此,我尝试使用KeyEvent(KeyListener)移动矩形,但每当我尝试按下键时,矩形都不会移动。矩形已绘制,但每当我按下left和right键时,没有任何反应。我有两个类,一个是带有keyEvents和框架的主类,另一个是绘制矩形并包含移动矩形的函数。这是我的代码:importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjavax.swing.JFrame;publicclassmainFrameextendsJFrameimplementsKeyListener{mainDrawDraw=ne