如果我想创建自己的自定义商品,JButton
并且想设置首选尺寸,该如何做。我以为这可能很容易,但是当我达到它时,我便有了一个尺寸,可以将其发送到我喜欢的尺寸。
但是,然后如何为我的特定组件设置正确的 x , y , width 和 height
值JButton
。setPreferredSize
从同一个方法中再次调用似乎很多余?
这是我对覆盖A感到奇怪的事情JComponent
。我知道他们应该如何与paintComponent(...)
。
我希望我的新按钮具有首选大小(这是默认大小),即20 x 20
。
我想在没有由构造函数设置大小的任何按钮上设置它。
此外,在创建自定义按钮时应重写哪些方法?
class myButton extends JButton {
public myButton(String s) {
super(s);
}
public void setPrefferedSize(Dimension d) {
this.setBounds(x, y, width, height)
setPreferredSize(d);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.RED);
}
}
首先:在@Override
您的setPrefferedSize
方法中添加注释会明确表明应调用setPreferredSize
。
除此之外,getPreferredSize
和setPreferredSize
方法在中具有一些特殊的语义JComponent
。引用JComponent#getPreferredSize文档:
如果preferredSize已设置为非null值,则将其返回。如果UI委托的getPreferredSize方法返回非null值,则返回该值;否则,返回null。否则请遵从组件的布局管理器。
使用设置首选大小时setPreferredSize
,一切都很好。(我 不
建议仅创建组件的子类以调用set...
构造函数中的某些方法,但我假设您将拥有一些其他方法来证明扩展该类是合理的)。
但是,在重写getPreferredSize
时JComponent
,应该尝试保留此方法的语义。这意味着您应该这样覆盖它
@Override
public Dimension getPreferredSize()
{
// If the preferred size was set manually, return this
// size in order to be in line with the specification
// that is described in the JavaDoc
if (super.isPreferredSizeSet())
{
return super.getPreferredSize();
}
// Otherwise, return "your" preferred size. The
// DEFAULT_WIDTH and DEFAULT_HEIGHT would be 20,20
// in your case
return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
(实际上,必须先向UI询问首选大小,但这在这里可能是不希望的)
问题内容: 我有一个并且设置,然后在“值”属性的“属性更改”中添加了一个事件侦听器。 首先,它在键入时不会调用事件侦听器方法。但是在“ focusLost”上,它将调用事件侦听器,此后 ,当再次获得焦点时,它将在键入时调用事件侦听器。 我希望事件监听器在任何时间发生任何更改之后都可以被调用(即使在第一时间)。 有什么问题?我该如何解决? 问题答案: 可能您必须在这里查看DocumentListen
我在catalina.sh中设置CATALINA_OPTS,但奇怪的是,这个值似乎被忽略了。我在一台有768M内存的机器上。以下是复制的步骤 在启动Tomcat之前,我通过运行检查内存。我得到以下信息 我在catalina.sh的第一行设置了CATALINA_OPTS,如下所示: 这表明使用了512MB。我不确定我做错了什么。我还尝试设置JAVA_OPTS,但也不起作用。 我在Centos6上使用
问题内容: 我需要一个带有附加的下拉样式菜单的JButton。因此,我采用了JPopupMenu并将其附加到JButton上,就像在下面的代码中看到的那样。它需要做的是: 单击时显示弹出窗口 如果第二次单击则将其隐藏 如果在弹出窗口中选择了一项,则将其隐藏 如果用户单击屏幕上的其他位置,则将其隐藏 这4种方法都可以使用,但是由于我使用的是boolean标志,如果用户单击其他位置或选择了一个项目,则
我正在用pygame和数学模块用python编写一个游戏。我写了这些代码来进行碰撞检测(我制造了5个障碍物,我想让我的玩家与之碰撞),但问题是在玩游戏的过程中,有时有效,有时无效。 这些是我定义的碰撞函数 在while循环中 请告诉我哪里做错了。
问题内容: 我在Ubuntu Hardy VPS上做了一份计划工作,只有一半可以工作,我不知道为什么。这项工作是一个Ruby脚本,它使用mysqldump备份Rails应用程序使用的MySQL数据库,然后将其压缩并使用SFTP上传到远程服务器。 gzip文件已成功创建并复制,但始终为零字节。但是,如果我直接从命令行运行cron命令,它将运行完美。 这是cron工作: 这是datadump.rb:
问题内容: 我是eclipse的新手,我在eclipse中的计时器无法正常工作,这是我的java。计时器中的代码: 基本上一切都按我的意愿运行,但是,我发现如果在计数时单击触发按钮,它将触发另一个计数而不会停止先前的计数。这非常令人尴尬,如果按钮再次触发,我的朋友建议我执行“切换”操作,并且我正在考虑向同一按钮添加其他操作,以停止重新启动计数。哪一个更可取? 问题答案: 计时器运行时禁用触发按钮。