0
2 차원 JTabbedPane을 생성하려고합니다. coderanch이라는 작은 예제에서 JTabbedPane을 2 차원으로 생성했습니다. 지금 내가하고 싶은 것은 테이블 생성 후 외부 클래스의 각 탭에 그림을 추가하는 것입니다. 의미, 나는이 표를 만든 다음 원하는 표를 표 안에 배치합니다 (아마도 사용자는 필요한 순서를 미리 알지 못하고 사용하는 숫자의 수만 알 수 있습니다). 하지만 탭을 업데이트 할 수없는 것 같습니다. 누군가 내가 잘못하고있는 것을 보여줄 수 있기를 바랬습니다. 다음은 그림 대신 텍스트를 추가하는 MWE입니다.2D 탭 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();
}
은}
, 그것은 내가 도움을 요청 있었는지 아니었다. 내가 물었던 질문이 모호하지만 그것은 내 잘못이라는 것을 알았다. 나는 질문을 업데이트 할 것이지만, 나는 당신이 당신의 대답을 위해 시간을 가져 주셔서 감사합니다. – mkunkel
구성 요소 (패널, 버튼, 콤보 박스 등)와 같은 의미가 아닌, 아무런 문제가 없습니다. –