2016-12-23 92 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'類中。 –

相關問題