1

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

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();
      }
  });


 }

}
4

5 回答 5

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

于 2013-05-20T16:03:40.083 回答
1

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

像其他人一样,我对您的问题感到困惑,但我会做出一个疯狂的猜测:

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

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

这就像在 JFrame 中添加一个面板。您可以将所需的任何组件添加到面板。

于 2013-05-20T15:10:23.430 回答
1

这是一个基于您的sscce的具体示例。

如何让我的窗户更大?

当您pack()封装Window时,就像您正在做的那样,JTabbedPane采用其最大组件的首选尺寸。只需将所需的组件添加到每个添加的面板。

图片

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;
}
于 2013-05-20T16:15:10.830 回答
0

To add buttons follow this How to add close button to a JTabbedPane Tab? .

very good tutorial http://paperjammed.com/2012/11/22/adding-tab-close-buttons-to-a-jtabbedpane-in-java-swing/

You can add other button similar way to your JPanel.

Tutorial from Oracle.

于 2013-05-20T14:09:00.437 回答