2016-12-23 7 views
1

ich wickeln will eine ‚Tab‘ in einem JTabbedPane mit JScrollPane.But füge ich nicht einen Weg it.This zu tun finden kann, ist mein Code so weit ...Wie kann ich JScrollPane innerhalb eines JTabbedPane der Tab

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

Bei der letzten des Teils der "Burger.java", versuchte ich eine JScrollPane hinzuzufügen, obwohl ich weiß, es ist nicht der richtige Weg, ich habe es getan. Wenn ich JPanel nicht in "Burger.java" erweitern würde, könnte ich ein Scrollfenster hinzufügen: "JScrollPane scroll = new JScrollPane (JPanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);"

Aber wie kann ich es jetzt in "Burger.java" tun? Wie kann ich ein JScrollPane in meinem "Burger" Tab hinzufügen? ...

Antwort

1

Edit: Sie erstreckt sich nicht JScrollPane, ist es hier nicht notwendig .

Sie können:

Zum Beispiel:

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

Oh, danke @MasterBlaster .. Ich werde versuchen, diese – Hasan

+0

Erweiterung Swing-Klassen sollte der letzte Ausweg sein und ist hier absolut nicht erforderlich. –

2

Erster Halt für solche Probleme ist die öffentliche Java-API-Dokumentation. Es würden Sie anderen Konstruktor von JScrollPane finden:

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

Nach dieser Ihr Problem durch gelöst werden könnte:

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

In meinem Code, p das Feld von JPanel @Timothy ist – Hasan

+0

ich das ganze ‚Tab‘ zu JScrollPane – Hasan

+0

@Hasan * „Ich habe die ganze‚Tab‘zu JScrollPane hinzufügen möchten“ hinzufügen möchten * Dann sould Sie entfernen die Instantiierung des 'JScrollPane' aus der' Burger'-Klasse in die 'HomeDelivery'-Klasse:' menu.addTab ("Burger", neues JScrollPane (neues Burger(), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER)); –

Verwandte Themen