簡體   English   中英

為什么 setVisibleRowCount() 在這種情況下不起作用?

[英]Why setVisibleRowCount() does not work in this situation?

我剛剛學習 Swing。我正在盡力為營養價值計算器創建一個菜單。 我不明白為什么setVisibleRowCount()方法不起作用。 我將該值設置為 1,但行仍然可見。 我希望對這個問題有一個很好的解釋。

package inFine;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main {

    public static void main(String[] args) {
        JFrame frame=new JFrame("Calculator Valori nutritive");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(500,500);
        frame.setLocation(500,100);
        frame.setLayout(new BorderLayout());
        String []MicDejun= {"Cereale","Ou fiert","Ou prajit","Omleta","Salata rosii","Salata cu bacon ","Ovaz","Sandwitch"};
        String []Pranz= {"Spanac","Cartofi prajiti","Linte","Piure","Orez Simplu", "Orez Legume","Brocoli","Piept de pui "
                ,"Macrou","Somon","Dorada","Ceafa de porc"};
        String []Cina= {"Lasagna","Paste","Pizza","Fasole carnati","Encilada","Tigaie picanta","Tigaie tiganeasca","Tocanita"};
        String []Snack= {"Chips Lays","Chips Lidl","Chips Carefur","Ciocolata","Corn","Inghetata","Placinta"};
        
        JPanel P_Centru,P_Nord = new JPanel(),P_South=new JPanel();
        JPanel P_MicDejun,P_Pranz,P_Cina,P_Snack;
        JLabel T_MicDejun=new JLabel("Mic Dejun: ");
        JLabel T_Pranz=new JLabel("Pranz: ");
        JLabel T_Cina=new JLabel("Cina: ");
        JLabel T_Snack=new JLabel("Snack: ");
        
        JList <String>L_MicDejun=new JList<>(MicDejun);
        L_MicDejun.setVisibleRowCount(1);
        JList <String>L_Pranz=new JList<>(Pranz);
        L_Pranz.setVisibleRowCount(1);
        JList <String>L_Cina=new JList<>(Cina);
        L_Cina.setVisibleRowCount(1);
        JList <String>L_Snacks=new JList<>(Snack);
        L_Snacks.setVisibleRowCount(1);
        
        JScrollPane scr1=new JScrollPane(L_MicDejun);
        JScrollPane scr2=new JScrollPane(L_Pranz);
        JScrollPane scr3=new JScrollPane(L_Cina);
        JScrollPane scr4=new JScrollPane(L_Snacks);
            
        P_MicDejun=new JPanel();
        set(T_MicDejun);
        P_MicDejun.add(T_MicDejun);
        P_MicDejun.add(L_MicDejun);
        P_MicDejun.add(scr1);
        
        P_Pranz=new JPanel();
        set(T_Pranz);
        P_Pranz.add(T_Pranz);
        P_Pranz.add(L_Pranz);
        P_Pranz.add(scr2);
        
        P_Cina=new JPanel();
        set(T_Cina);
        P_Cina.add(T_Cina);
        P_Cina.add(L_Cina);
        P_Cina.add(scr3);
        
        P_Snack=new JPanel();
        set(T_Snack);
        P_Snack.add(T_Snack);
        P_Snack.add(L_Snacks);
        P_Snack.add(scr4);
        
        P_Centru=new JPanel();
        P_Centru.setLayout(new GridLayout(4,1));
        P_Centru.add(P_MicDejun);
        P_Centru.add(P_Pranz);
        P_Centru.add(P_Cina);
        P_Centru.add(P_Snack);
        
        frame.add(BorderLayout.NORTH,P_Nord);
        frame.add(BorderLayout.CENTER,P_Centru);
        frame.add(BorderLayout.SOUTH,P_South);          
    }

    public static void set (JLabel a)
    {
        a.setFont(new java.awt.Font("Arial",Font.PLAIN,12));
        a.setForeground(Color.black);
    }
        
} 

根本問題是一個組件只能出現在一個容器中。 這些表被添加到其構造函數中的滾動窗格。 它們不需要單獨添加到.. 其他任何東西。 這是這樣做的直接效果。

在此處輸入圖像描述

注意:添加對frame.pack(); 在構造函數中的所有其他內容之后會使 GUI 中的組件看起來更可靠。 代碼還有其他問題,但重要的是上面介紹的基礎知識。

暫無
暫無

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

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