繁体   English   中英

多个JButton

[英]Multiple JButtons

鉴于我有一个按钮,可以添加到不同的面板我是否正确说实例化1 JButton是不可能的?

示例:添加“取消”按钮以退出应用程序并将其添加到具有一定数量选项卡的选项卡窗格。

我可不可以做

JButton btnCancel = new JButton(“取消”);

并在JFrame tab1.add(btnCancel)的第一个标签的JPanel之一;

第二个标签tab2.add(btnCancel);

或者我必须为每个选项卡窗格创建一个新的JButton?

..我可以这样按钮不会成为新标签吗?

使用嵌套布局。 例如

import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

class CancelTab {

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new BorderLayout(3,3));
                gui.setBorder(new TitledBorder("GUI"));
                JPanel controls = new JPanel(
                    new FlowLayout(FlowLayout.CENTER,5,5));
                controls.add(new JButton("Commit"));
                controls.add(new JButton("Cancel"));

                gui.add(controls,BorderLayout.SOUTH);

                JTabbedPane tabbedPane = new JTabbedPane();

                tabbedPane.addTab("Tab 1", new JLabel("Label 1"));
                tabbedPane.addTab("Tab 2", new JLabel("Label 2"));
                gui.add(tabbedPane, BorderLayout.CENTER);

                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

屏幕截图

在此输入图像描述

将其放在选项卡窗格下方。 所以你的层次结构看起来像这样:

  • 的JFrame
    • JTabbedPane中
      • 标签1的JPanel
      • 标签2的JPanel等
    • JButton取消

jleedev解决方案最好(1+),但是如果你绝对需要将它添加到每个JPanel,那么你可以创建一个用按钮的文本构造的AbstractAction,并用这个相同的AbstractAction创建新的JButton,或者你可以创建一个单个ButtonModel,由具有相同名称和操作的所有JButton共享。

如果您计划按钮没有功能,这将起作用。 但是,如果您计划向对象添加任何侦听器,则执行除此之外的任何任务都不是一个好选择。 但是,如果您在执行操作时获取按钮的父容器并相应地执行任务,则它可以工作。

但无论哪种方式,为每次使用创建新的JButton都更有效率和合理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM