2015-12-04 40 views
0

以下代碼使用GridLayout展示了JLabel。 GridLayout的參數如下:行,列,水平間隙,垂直間隙。在下面的例子中,我在標籤之間垂直和水平方向都有3個像素的間隙。我可以更換標籤嗎?或者我可以給一個圖形用戶界面和ID?像在HTML中?

要使用圖像而不是數字,您可以將ImageIcon傳遞給JLabel的構造函數而不是文本。

import java.awt.GridLayout; 
import javax.swing.*; 
import javax.swing.border.BevelBorder; 

public class FrameTest { 

    public static void main(String[] args) { 
     final JFrame f = new JFrame("Frame Test"); 

     JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3)); 

     for (int i = 0; i < 16; i++) { 
      JLabel l = new JLabel("" + i, JLabel.CENTER); 
      // JLabel l = new JLabel(new ImageIcon("image_file.png"), 
      // JLabel.CENTER); 
      l.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); 
      l.setFont(l.getFont().deriveFont(20f)); 
      panel.add(l); 
     } 

     f.setContentPane(panel); 
     f.setSize(200, 200); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 
} 

在代碼中的小應用程序建立像一個堆棧,但我想讓它更換一樣,如果我有一個移動機器人,我只想要替換其中機器人移動,而不是建立一個全新的標籤網格?或者我可以用java中的任何其他GUI來做到這一點?

+1

你也可以改變標籤上的文字 – SomeJavaGuy

+1

或者乾脆交換ImageIcons。 –

+0

是啊,但它變得很難,如果有路上的塊,更像AI的東西-_- –

回答

0

首先,我建議使用JLabel的數組來跟蹤每個標籤的引用。

JLabel[] labels = JLabel[16]; 

然後,當事件發生時,您可以使用JLabel#setIcon方法動態更改圖標。

+0

聽起來沒錯,只是要試試:)謝謝兄弟! –

+0

完成,你能給它一個有用和清晰的+1嗎?那個人確實減少了我的聲望,甚至不能再給予反饋-_-再次感謝。 –

+0

@MohamedGabr沒問題我做了它:)很高興它幫助你 –

相關問題