2016-12-13 2 views
0

Ich versuche, eine zweidimensionale JTabbedPane zu erstellen. Ich habe ein kleines Beispiel unter coderanch gefunden, um das JTabbedPane in 2 Dimensionen zu erstellen. Was ich jetzt tun möchte, ist, nach der Erstellung der Tabelle jeder Registerkarte aus einer externen Klasse eine Zahl hinzuzufügen. Das heißt, ich erstelle diese Tabelle und lege dann die Figuren, die ich will, in die Tabelle (vielleicht weiß der Benutzer vorher nicht die benötigte Reihenfolge, er weiß nur die Anzahl der zu verwendenden Figuren). Aber ich kann nicht scheinen, dass der Tab aktualisiert wird. Ich hatte gehofft, dass mir jemand zeigen könnte, was ich falsch mache. Hier ist ein MWE zum Hinzufügen von Text (anstelle einer Figur).Hinzufügen zu 2D-Registerkarten JTabbedPane

import java.awt.Dimension; 
import java.awt.Toolkit; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTabbedPane; 

public class DCTabbed2DPane { 
    private Dimension screensize; 
    private JFrame frame; 
    private JTabbedPane topTabbedPane; 
    private JTabbedPane[] leftTabbedPane; 
    private int rows; 
    private int cols; 

    private String frameName; 

public DCTabbed2DPane(String frameName, int rows, int cols) { 
    this.frameName = frameName; 
    this.rows = rows; 
    this.cols = cols; 
    init(); 
} 

private void setScreenSize() { 
    screensize = Toolkit.getDefaultToolkit().getScreenSize(); 
} 

private void setJFrame() { 
    frame = new JFrame(frameName); 
    frame.setSize((int) (screensize.getHeight() * .75 * 1.618), (int) (screensize.getHeight() * .75)); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

} 

private void setJTabbedPane() { 
    topTabbedPane = new JTabbedPane(JTabbedPane.TOP); 
    leftTabbedPane = new JTabbedPane[cols]; 

} 

private void setTabs() { 
    for (int i = 0; i < cols; i++) { 
     leftTabbedPane[i] = new JTabbedPane(JTabbedPane.LEFT); 
     for (int j = 0; j < rows; j++) { 
      leftTabbedPane[i].addTab("Super Layer " + (j + 1), new JLabel("Sector " + (i + 1) + " - " + (j + 1))); 
     } 
     topTabbedPane.addTab("Sector " + (i + 1), leftTabbedPane[i]); 
    } 
    frame.add(topTabbedPane); 
    topTabbedPane.setSelectedIndex(-1); 
} 

private void init() { 
    setScreenSize(); 
    setJFrame(); 
    setJTabbedPane(); 
    setTabs(); 
} 

public void addCanvasToPane(Integer row, String str) { 
    leftTabbedPane[row].addTab("", new JLabel(str)); 
    frame.add(topTabbedPane); 
    frame.revalidate(); 
    frame.repaint(); 
} 

public void showFrame() { 

    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    int rows = 6; 
    int cols = 6; 

    DCTabbed2DPane test = new DCTabbed2DPane("PooperDooper", rows, cols); 
    for (int j = 0; j < cols; j++) { 
     test.addCanvasToPane(j, "Name " + j); 
    } 
    test.showFrame(); 

} 

}

Antwort

1

Es ist entweder Sie die Abbildung auf der Navigation-Tab, wie

leftTabbedPane[i] = new JTabbedPane(JTabbedPane.LEFT); 
      for (int j = 0; j < rows; j++) { 
       leftTabbedPane[i].addTab("Super Layer " + (j + 1),new ImageIcon(getClass().getResource("Images/map.png")), new JLabel("Sector " + (i + 1) + " - " + (j + 1))); 
      } 

enter image description here

Oder so ein

leftTabbedPane[i] = new JTabbedPane(JTabbedPane.LEFT); 
      for (int j = 0; j < rows; j++) { 
       leftTabbedPane[i].addTab("Super Layer " + (j + 1), new MyLabel("Images/Horse.png","").getLabel());   
      } 

wo MyLabel

public class MyLabel { 
    JLabel label; 
    String path; 
    String text; 

    public MyLabel(String path, String text) { 
     this.label = new JLabel(); 
     this.path = path; 
     this.text = text;  
    } 
    public void setUpImage(String path) { 
     this.label.setIcon(new ImageIcon(getClass().getResource(path))); 
    } 

    public JLabel getLabel() { 
     setUpImage(this.path); 
     return this.label; 
    } 

} 

enter image description here

+0

ist zwar, dass ein großartiges Beispiel für die Einrichtung eines Bildes ist, war es nicht das, was ich Hilfe für bat. Ich erkenne, dass es meine Schuld ist, da die Frage, ich fragte, ist eine, aber mehrdeutig. Ich werde die Frage aktualisieren, aber ich schätze die Zeit, die Sie für Ihre Antwort genommen haben. – mkunkel

+0

Kein Problem, BTW, nach Figur meinen Sie wie Komponenten (Panel, Button, Combobox, etc.)? –

Verwandte Themen