2016-12-23 97 views
1

我想换一个“标签”与JScrollPane.But一个JTabbedPane的内我不能找到一个方法来做到it.This是到目前为止我的代码...如何添加JScrollPane的一个JTabbedPane中的选项卡里面

“HomeDelivery.java”

import java.sql.*; 
import java.util.*; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.border.LineBorder; 

class HomeDelivery extends JFrame 
{ 
JTabbedPane menu; 
JPanel pizza,pastry,drinks; 

public HomeDelivery() 
{ 
    setSize(800,800); 
    setVisible(true); 
    setLayout(new BorderLayout()); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    menu = new JTabbedPane(); 

    menu.addTab("Burger",new Burger()); 

    pizza = new JPanel(); 
    menu.addTab("Pizza",pizza); 

    pastry = new JPanel(); 
    menu.addTab("Pastry",pastry); 

    drinks = new JPanel(); 
    menu.addTab("Drinks",drinks); 

    add(menu); 
} 

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

“Burger.java”

import java.sql.*; 
import java.util.*; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.border.LineBorder; 

class Burger extends JPanel 
{ 
JFrame f; 
//JPanel s; 
JPanel p[]; 
JLabel image[]; 
JLabel name[]; 
JLabel price[]; 
JButton b[]; 
JScrollPane scroll; 
int row; 

public Burger() 
{ 
    p = new JPanel[40]; 
    image = new JLabel[40]; 
    name = new JLabel[40]; 
    price = new JLabel[40]; 
    b = new JButton[40]; 

    for(int i=0;i<40;i++) 
    { 
     p[i] = new JPanel(); 
     p[i].setLayout(new BoxLayout(p[i],BoxLayout.LINE_AXIS)); 
     p[i].add(Box.createRigidArea(new Dimension(100,50))); 
     image[i] = new JLabel("Image"); 
     b[i] = new JButton("ADD"); 
     name[i] = new JLabel("Burger"); 
     price[i] = new JLabel("150"); 

     p[i].add(image[i]); 
     p[i].add(name[i]); 
     p[i].add(price[i]); 
     p[i].add(b[i]); 

     add(p[i]); 
    } 

    scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
    scroll.setPreferredSize(new Dimension(100,50)); 
    add(scroll); 
} 
} 

在最后的 “Burger.java” 的部分,我试图添加一个JScrollPane,虽然我知道这是不正确的做法。如果我没有在“Burger.java”中扩展JPanel,我可以通过这样做来添加一个滚动条: “JScrollPane scroll = new JScrollPane(JPanel,JScrollPane.VERTICAL_SCROLLBAR_​​ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_​​NEVER);”

但是,我现在怎么做到“Burger.java”?我如何在我的“汉堡”“选项卡”中添加JScrollPane? ...

回答

1

编辑:不要延长JScrollPane,没有必要在这里。

您可以:

例如:

import java.awt.EventQueue; 
import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTabbedPane; 
import javax.swing.SwingConstants; 
import javax.swing.WindowConstants; 

public class TabExample { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(() -> { 
      final JFrame frame = new JFrame("Example"); 
      final JTabbedPane tp = new JTabbedPane(); 
      final BurgerTab burgerTab = new BurgerTab(); 
      final JScrollPane scrollPane = new JScrollPane(burgerTab, 
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
      tp.addTab("Burgers", scrollPane); 
      frame.getContentPane().add(tp); 
      frame.pack(); 
      frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
      frame.setLocationByPlatform(true); 
      frame.setVisible(true); 
     }); 
    } 

    private static class BurgerTab extends JPanel { 

     BurgerTab() { 
      setLayout(new BoxLayout(this, SwingConstants.VERTICAL)); 
      final JPanel[] burgers = new JPanel[40]; 

      for(int i = 0; i < burgers.length; i++) { 
       burgers[i] = new JPanel(); 
       burgers[i].add(new JLabel("Burger #" + (i + 1))); 
       add(burgers[i]); 
      } 
     } 

    } 

} 
+0

哦,谢谢你@MasterBlaster ..我会试试这个 – Hasan

+0

扩展Swing类应该是最后的手段,在这里绝对不需要。 –

2

这样的问题的第一站是公共Java API文档。在那里,你会发现JScrollPane另一个构造:

http://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html#JScrollPane-java.awt.Component-int-int-

根据这个您的问题可以通过解决:

scroll = new JScrollPane(p, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
+0

在我的代码,p是JPanel的@Timothy – Hasan

+0

的阵列我想整个“选项卡”添加到JScrollPane中 – Hasan

+0

@Hasan *“我想添加整个‘选项卡’到JScrollPane的” *然后你删除前人的精力(Burger),新的JScrollPane(新的Burger(),JScrollPane.VERTICAL_SCROLLBAR_​​ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_​​NEVER));在这个例子中,JScrollPane的实例化到'HomeDelivery'类的'Burger'类中。 –

相关问题