我想为每个标签添加按钮

时间:2013-05-20 14:03:03

标签: java swing tabs jbutton jtabbedpane

我总共有三个标签,当用户点击不同的标签时,我需要有用户可以点击的按钮。我也想知道如何让我的窗户更大。提前感谢您的回答。

import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import javax.swing.JButton;

public class Tabs extends JPanel {
    public Tabs() {
      super(new GridLayout(10, 10));


JTabbedPane tabbedPane = new JTabbedPane();

tabbedPane.addTab("Initialize", null, null,"Does Nothing");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

tabbedPane.addTab("LLP", null, null, "Does Nothing");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_2);

tabbedPane.addTab("POS", null, null, "Does Nothing");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_3);

add(tabbedPane);

tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

}

private static void createAndShowGUI() {
  JFrame frame = new JFrame("Tabbed Pane");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.add(new Tabs(), BorderLayout.CENTER);

  frame.pack();
  frame.setVisible(true);
}

public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
      public void run() {
  UIManager.put("swing.boldMetal", Boolean.FALSE);
  createAndShowGUI();
      }
  });


 }

}

5 个答案:

答案 0 :(得分:2)

将组件添加到JTabbedPane

很简单。您想要在包含面板的JTabbedPane上显示按钮,因此您需要先创建按钮和面板,向面板添加按钮并向JTabbedPane添加面板。

示例:

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class TabbedPaneExample {

    private JFrame frame = new JFrame();

    public TabbedPaneExample() {
        JButton btn = new JButton("Test");

        JPanel panel = new JPanel();
        panel.add(btn);

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.add("Tab1", panel);

        frame.add(tabbedPane, BorderLayout.CENTER);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setMinimumSize(new Dimension(300, 300));
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        TabbedPaneExample main = new TabbedPaneExample();
    }
}

JButton事件处理

您还询问了如何处理按钮点击事件。这里有很好的解释:A JButton listener example

答案 1 :(得分:1)

答案 2 :(得分:1)

  

我想要一个用户可以单击的按钮,这将导致另一个窗口出现并且用户输入数据。

和其他人一样,我对你的问题很困惑,但我会猜测:

tabbedPane.addTab("LLP", null, null, "Does Nothing");

您没有向选项卡添加任何组件。您需要创建一个JPanel并将您的按钮添加到面板。然后在使用addTab(...)方法时将面板添加到选项卡。

就像将面板添加到JFrame一样。您可以将任何组件添加到面板中。

答案 3 :(得分:1)

以下是基于sscce的具体示例。

  

如何让我的窗户更大?

当您pack()封闭Window时,正如您所做的那样,JTabbedPane采用其最大组件的首选大小。只需在每个添加的面板中添加所需的组件即可。

image

public Tabs() {
    super(new GridLayout());
    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.add(createPanel("Initialize"));
    tabbedPane.add(createPanel("LLP"));
    tabbedPane.add(createPanel("POS"));
    add(tabbedPane);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}

private JPanel createPanel(final String name) {
    final JPanel p = new JPanel();
    p.setName(name);
    p.add(new JButton(new AbstractAction(name) {
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(p, name);
        }
    }));
    return p;
}

答案 4 :(得分:0)

要添加按钮,请按此操作 How to add close button to a JTabbedPane Tab?

非常好的教程http://paperjammed.com/2012/11/22/adding-tab-close-buttons-to-a-jtabbedpane-in-java-swing/

您可以添加与JPanel类似的其他按钮。

来自Oracle.

的教程