簡體   English   中英

如何在JTabbedPane的Tab中添加JScrollPane

[英]How can i add JScrollPane inside a JTabbedPane's Tab

我想用JScrollPane在JTabbedPane中包裝一個'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);
}
}

在“ Burger.java”的最后一部分,我嘗試添加一個JScrollPane,盡管我知道這樣做不是正確的方法。 如果我沒有在“ Burger.java”中擴展JPanel,則可以通過執行以下操作來添加滾動窗格:

但是,現在如何在“ Burger.java”中執行此操作? 如何在“ Burger”“ Tab”中添加JScrollPane? ...

此類問題的第一站是公共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);

編輯:不要擴展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]);
            }
        }

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM