有没有什么方法可以通过按钮创建边界类?像这样:example在面板的边框上放置一个按钮
一个重要的条件 - 按钮必须与边界位置对齐,因为面板可以改变其大小。所以imho LayeredPane不适合这个 - 对此没有任何理由。
有一个想法 - 模仿按钮:
- 创建我的类面板按钮的
- 重写paintComponent()和绘画图像在边界
- 覆盖鼠标事件为它和使用它像按钮
但是。也许有办法在边界上放置真正的按钮?
有没有什么方法可以通过按钮创建边界类?像这样:example在面板的边框上放置一个按钮
一个重要的条件 - 按钮必须与边界位置对齐,因为面板可以改变其大小。所以imho LayeredPane不适合这个 - 对此没有任何理由。
有一个想法 - 模仿按钮:
但是。也许有办法在边界上放置真正的按钮?
我不相信这是可能的标准边框,主要是因为Border
不是Container
,所以不能添加到它的其他部件。
但是,如果你愿意去自定义边框实现,有可能假的边界,例如:
private class BorderFaker extends JPanel
{
public BorderFaker()
{
add(new JButton("Faked!"));
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
drawFauxBorder(g);
}
private void drawFauxBorder(Graphics g)
{
g.setColor(UIManager.getColor("border"));
g.drawRect(15, 15, getWidth() - 30, getHeight() - 30);
}
}
这显示了如何可以做到这一点,但它引入了很多问题,例如区分边界内和边界内的组件(我只是硬编码“伪装!”按钮以供演示)。而且您仍然必须组织相对于“边框”的组件布局。这需要小心处理组件和一些方便的布局工作 - 正如@trashgod最初的建议。
不过,我不知道,我宁愿做这样的事情,假的边界比假的画一个按钮。如果您绘制自己的按钮,则会失去对当前外观和感觉的遵从性,并且除非按钮UI执行所有操作(处理翻转,布防状态等),否则看起来不太可能。
你一定要看看Using Layout Managers。 How to Use BoxLayout中的第二个例子看起来很像您的示例。
附录:如Creating Custom Borders所述,可能延长AbstractBorder
,以达到预期的效果。您可以传入按钮的侦听器,如讨论here,或维护您自己的侦听器列表。
Component Border类旨在允许您将组件作为边框添加到任何组件。
默认行为是在现有边框内添加组件。我没有做一个完整的测试,但它看起来像这个类可以定制添加到现有的边界顶部的组件:
// component.setLocation((int)x2, (int)y2);
component.setLocation(10, 0);
谢谢。正如我以为... 好吧,似乎我选择了正确的道路 - 将使用图像。这将是NetBeans的一个摆动组件。那就是为什么。更容易创建ImageButton类(状态,翻转等)。更适合我的目的。另外这个按钮肯定会是小图标。所以... 无论如何,再次感谢:) – imp 2010-02-20 22:06:00