2016-12-23 3 views
1

Я хочу, чтобы обернуть «Tab» внутри JTabbedPane с JScrollPane.But я не могу найти способ сделать .Так мой код до сих пор ...Как я могу добавить JScrollPane внутри Tab 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, хотя я знаю, что это не так, как я сделал это. Если я не расширил JPanel в «Burger.java», я могу добавить scrollpane, выполнив это: «JScrollPane scroll = новый JScrollPane (JPanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

Но, как я могу сделать это сейчас в «Burger.java»? Как добавить JScrollPane в вкладку «Burger»? ...

ответ

1

Edit: Не выдвигайте 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

О, спасибо u @MasterBlaster .. Я попробую это – Hasan

+0

Расширение Swing классов должно быть последним средством и абсолютно не нужно здесь. –

2

Первой остановкой для подобных проблем является публикация документации по API Java. Там вы найдете другой конструктор 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

В моем коде, р массив JPanel @Timothy – Hasan

+0

Я хочу, чтобы добавить все «Tab», чтобы JScrollPane – Hasan

+0

@Hasan * «Я хочу, чтобы добавить все„Tab“для JScrollPane» * Тогда вы sould удалить экземпляр 'JScrollPane' из класса' Burger' в класс 'HomeDelivery':' menu.addTab («Burger», новый JScrollPane (новый Burger(), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER)); –

Смежные вопросы