2013-11-27 20 views
0

GUI新手。我正在制作一个具有多个链接选项卡的GUI。 GUI中的选项卡类似于http://www.bestbuy.com/上的产品,服务等选项卡。我会用什么来创建这些标签?我用Google搜索了,我发现的最佳答案是使用Jtabbedpane。请告知这是否正确。另外,如果它是Jtabbedpane,我怎么改变在我点击标签名称后出现的面板(?)(更小)的大小?谢谢!GUI:建议是否应该使用JTabbedpane

+0

到目前为止显示您的代码,您的面板是什么样的? – Sionnach733

+0

您是否想要简单的标签,或者将鼠标悬停在标签后面的子标签的小型面板出现? –

+0

@ Sionnach733 - 我还没有任何代码,因为我不知道从哪里开始......我想在编写代码之前规划出我需要做的事情。 – user2925557

回答

0

使用JTabbedPane。这就是我所能说的。这将让你创建一个标签面板,如下图所示:

enter image description here

SSCCE:

/* 
* Licence and stuff from Oracle. 
*/ 
package components; 

/* 
* TabbedPaneDemo.java requires one additional file: 
* images/middle.gif. 
*/ 

import javax.swing.JTabbedPane; 
import javax.swing.ImageIcon; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JComponent; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.event.KeyEvent; 

public class TabbedPaneDemo extends JPanel { 
    public TabbedPaneDemo() { 
     super(new GridLayout(1, 1)); 

     JTabbedPane tabbedPane = new JTabbedPane(); 
     ImageIcon icon = createImageIcon("images/middle.gif"); 

     JComponent panel1 = makeTextPanel("Panel #1"); 
     tabbedPane.addTab("Tab 1", icon, panel1, 
       "Does nothing"); 
     tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); 

     JComponent panel2 = makeTextPanel("Panel #2"); 
     tabbedPane.addTab("Tab 2", icon, panel2, 
       "Does twice as much nothing"); 
     tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); 

     JComponent panel3 = makeTextPanel("Panel #3"); 
     tabbedPane.addTab("Tab 3", icon, panel3, 
       "Still does nothing"); 
     tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); 

     JComponent panel4 = makeTextPanel(
       "Panel #4 (has a preferred size of 410 x 50)."); 
     panel4.setPreferredSize(new Dimension(410, 50)); 
     tabbedPane.addTab("Tab 4", icon, panel4, 
       "Does nothing at all"); 
     tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); 

     //Add the tabbed pane to this panel. 
     add(tabbedPane); 

     //The following line enables to use scrolling tabs. 
     tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 
    } 

    protected JComponent makeTextPanel(String text) { 
     JPanel panel = new JPanel(false); 
     JLabel filler = new JLabel(text); 
     filler.setHorizontalAlignment(JLabel.CENTER); 
     panel.setLayout(new GridLayout(1, 1)); 
     panel.add(filler); 
     return panel; 
    } 

    /** Returns an ImageIcon, or null if the path was invalid. */ 
    protected static ImageIcon createImageIcon(String path) { 
     java.net.URL imgURL = TabbedPaneDemo.class.getResource(path); 
     if (imgURL != null) { 
      return new ImageIcon(imgURL); 
     } else { 
      System.err.println("Couldn't find file: " + path); 
      return null; 
     } 
    } 

    /** 
    * Create the GUI and show it. For thread safety, 
    * this method should be invoked from 
    * the event dispatch thread. 
    */ 
    private static void createAndShowGUI() { 
     //Create and set up the window. 
     JFrame frame = new JFrame("TabbedPaneDemo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Add content to the window. 
     frame.add(new TabbedPaneDemo(), BorderLayout.CENTER); 

     //Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     //Schedule a job for the event dispatch thread: 
     //creating and showing this application's GUI. 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       //Turn off metal's use of bold fonts 
     UIManager.put("swing.boldMetal", Boolean.FALSE); 
     createAndShowGUI(); 
      } 
     }); 
    } 
} 

的例子详细解释上述can be found here


怎么办我改变面板的大小(?)(小一点) t点击标签名称后出现 ?

通过设置您放入选项卡的JPanel的首选尺寸。但是,不鼓励手动更改大小。让布局经理为您管理。

相关问题