2015-04-25 26 views
0

這裏是我的問題: 我創建一個窗口,負責在ImageIcon作爲的形式上市層,在此它顯示層的 當前圖像(現在),圖層名稱和複選框來更改所述圖層的當前開啓/關閉狀態。整個事情應該是的Paint.NET's Layer Window敲落,如下所示:搖擺:JList的持有多個組件作爲單個項目

我的問題是,如何繞過JTable構建它如此。我想到最後,我可能不得不求助於製作一個動態表格,但我想知道是否有辦法制作可單獨顯示這三個組件的項目/容器。

我得到的最接近的是使用JLabel及其使用的圖標和文本屬性,但我無法確定如何添加複選框。

我應該使用佈局管理器將標籤列表移動到左側,並在窗格中添加一個填充了複選框的新列表嗎?

我的代碼大概如下:

public class StudioLayerWindow extends JFrame 
{ 
// Objects 
JPanel buttonPanel; 
JScrollPane layerScroll; 

JButton addNewLayer; 
JButton deleteCurrentLayer; 
JButton duplicateCurrentLayer; 
JButton mergeCurrentLayer; 
JButton moveCurrentLayerUp; 
JButton moveCurrentLayerDown; 
JButton layerProperties; 

// Constructors & Initializers 
public StudioLayerWindow() 
{ 
    // Main Window Initialization 
    this.setTitle("Layers"); 
    this.setType(Type.UTILITY); 
    this.setSize(200,200); 
    this.setResizable(false); 
    this.setAlwaysOnTop(true); 

    initButtons(); 

    buttonPanel = new JPanel(new GridLayout(1,7)); 
    buttonPanel.setPreferredSize(new Dimension(this.getWidth(), this.getHeight()/ 7)); 
    buttonPanel.add(addNewLayer); 
    buttonPanel.add(deleteCurrentLayer); 
    buttonPanel.add(duplicateCurrentLayer); 
    buttonPanel.add(mergeCurrentLayer); 
    buttonPanel.add(moveCurrentLayerUp); 
    buttonPanel.add(moveCurrentLayerDown); 
    buttonPanel.add(layerProperties); 

    // Code for what I'd add here 
    layerScroll = new JScrollPane(); 

    this.add(layerScroll , BorderLayout.CENTER); 
    this.add(buttonPanel , BorderLayout.PAGE_END); 
} 

上面的代碼不包含任何嘗試我的解決方案,只有基本的模板,我一直在。

有什麼辦法可以在單一行上製作多個組件嗎?

+0

*「我的問題是如何繞過JTable來構造它。」*爲什麼'繞過'?標準的(3列)'JTable'抑制垂直和水平線可以做到這一點。 –

回答

2

JList是一個泛型類。

  • 創建一個擴展爲JPanel的類。 (讓我們把它叫做RowPanel
  • 把所有的元素在它存在於一個單一的行所需(使用水平佈局)
  • 使用這些面板像

    JList<RowPanel> list = new JList<RowPanel>(); 
    
  • 您可以參考創建JList這個創建ListCellRendererListCellEditorhttps://docs.oracle.com/javase/tutorial/uiswing/components/list.html

注意:如果您在任何情況下都不想使用JTable,應該這樣做。 JTable是此解決方案的不錯選擇。

希望這會有所幫助。
祝你好運。

+0

有沒有辦法爲'JPanel'中的每個組件添加'tool-tips'。我這樣做了,我只能爲'JPanel'添加'工具提示' –

相關問題