簡體   English   中英

如何在Java Swing應用程序中實現頁面?

[英]How to implement pages in Java Swing app.?

我在Java創建Apps方面有一些經驗,並且想了解更多,因此決定創建一個具有不同頁面的應用程序。 例如,初始框架將顯示一個按鈕菜單,這些菜單將導致不同的框架,並顯示不同的組件和布局。

我不太確定實施網頁的最佳做法。 我想我可以將JFrame窗口存儲在一個列表中,然后使用按鈕處理程序類來更改不同框架的可見性,僅當用戶單擊按鈕時才允許相關框架可見。 我認為這種方法可行,但是是否有更有效/實用的方法呢?

我知道CardLayout ,但是對於這個程序,我試圖學習MigLayout 因此,據我所知,這將是不可能的。 我希望這個問題不要太含糊,我只是想了解有關在Java中創建具有不同頁面的應用程序的最佳實踐。

可以使用選項卡式窗格,這是存儲頁面的最佳選擇。

https://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html

我還注意到您需要適當考慮頂級容器,因為您不必每次都為每個Page創建JFrame,至少在必要時(例如:編輯器,創建一個新窗口,因此您需要創建一個新的JFrame(對於您而言,我認為不是),因此請考慮下面的鏈接。

https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html

JInternalFrame是Java Swing的一部分。 JInternalFrame是一個容器,提供框架的許多功能,包括顯示標題,打開,關閉,調整大小,對菜單欄的支持等。 內部框架及組件示例

創建多個內部框架的代碼:

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

class solution extends JFrame { 

// frame 
static JFrame f; 

// label to diaplay text 
static JLabel l, l1; 

// main class 
public static void main(String[] args) { 
    // create a new frame 
    f = new JFrame("frame"); 

    // set layout of frame 
    f.setLayout(new FlowLayout()); 

    // create a internal frame 
    JInternalFrame in = new JInternalFrame("frame 1", true, true, true, true); 

    // create a internal frame 
    JInternalFrame in1 = new JInternalFrame("frame 2", true, true, true, true); 

    // create a Button 
    JButton b = new JButton("button"); 
    JButton b1 = new JButton("button1"); 

    // create a label to display text 
    l = new JLabel("This is a JInternal Frame no 1  "); 
    l1 = new JLabel("This is a JInternal Frame no 2  "); 

    // create a panel 
    JPanel p = new JPanel(); 
    JPanel p1 = new JPanel(); 

    // add label and button to panel 
    p.add(l); 
    p.add(b); 
    p1.add(l1); 
    p1.add(b1); 

    // set visibility internal frame 
    in.setVisible(true); 
    in1.setVisible(true); 

    // add panel to internal frame 
    in.add(p); 
    in1.add(p1); 

    // add internal frame to frame 
    f.add(in); 
    f.add(in1); 

    // set the size of frame 
    f.setSize(300, 300); 

    f.show(); 
} 
}

暫無
暫無

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

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