我编写了一个小程序来创建带有选项卡的panes.Currently的简单gui,它有两个选项卡。在其中一个选项卡中,我创建了一个按钮,在另一个选项卡中,我创建了两个按钮(基于第三个类中的字符串),我无法做的是在第二个选项卡中创建两个选项卡( te代码中引用的“一”和“二”),而当前在选项卡中的两个按钮应该出现在每个子tabs.Can中,有人告诉我如何才能做到这一点?
主要课程:abc.java
public class abc {
JFrame frame;
JTabbedPane tabPane;
abc_export exp;
bsm_import2 imp;
public static void main(String[] args) {
abc jtab = new abc();
jtab.start();
}
public void start(){
exp=new abc_export();
imp=new bsm_import2();
tabPane.addTab("bsm_export", exp.tab);
tabPane.addTab("bsm_import2", imp.tab);
}
public abc() {
// Create a frame
frame = new JFrame();
// Create the tabbed pane.
tabPane = new JTabbedPane();
//Adding into frame
frame.add(tabPane, BorderLayout.CENTER);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}类two:abc_export.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class abc_export {
JPanel tab;
public abc_export() {
//Adding into frame
tab = new JPanel();
JButton btn=new JButton("run");
tab.add(btn);
tab.setOpaque(false);
}
};第三类:bsm_import2.java(this是我需要进行更改以创建子选项卡的地方)
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.StringTokenizer;
import java.util.*;
import java.awt.event.*;
public class bsm_import2 {
public static JPanel tab;
public bsm_import2()
{
createAndShowGUI();
}
private static void createAndShowGUI() {
tab=new JPanel();
tab.setLayout(new GridLayout(3,2));
String line="tab1#one tab2#two";
String strAry[] = line.split(" ");
JButton Button[]=new JButton[100];
final Map<String, String> map = new HashMap<String, String>();
for(int i =0; i < strAry.length ; i++){
String[] parts = strAry[i].split("#");
map.put(parts[0],parts[1]);
Button[i] = new JButton(parts[0]);
tab.add(Button[i]);
tab.setOpaque(false);
}
for ( String key : map.keySet() ) {
System.out.println( key );
}
}
}

发布于 2013-02-27 10:03:38
根据我对你的问题的理解,你可以做的是,在第二个选项卡的面板中添加一个新的JTabbedPane,每个选项卡上有一个按钮,你就会得到你想要的东西。一个小的演示代码将是:
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTabbedPane mainTabsPane = new JTabbedPane(); // main tabs pane
//first tab
JButton button = new JButton("Button in first tab");
JPanel jPanel = new JPanel();
jPanel.add(button);
mainTabsPane.addTab("First tab", jPanel);
//second tab
jPanel = new JPanel();
JTabbedPane secondaryTabsPane = new JTabbedPane(); // secondary tabs pane
button = new JButton("Button in second tab ---> first sub tab");
JPanel jPanel2 = new JPanel();
jPanel2.add(button);
secondaryTabsPane.addTab("First tab", jPanel2);
JPanel jPanel3 = new JPanel();
button = new JButton("Button in second tab ---> second sub tab");
jPanel3.add(button);
secondaryTabsPane.addTab("Second tab", jPanel3);
// add secondary tabs pane to new panel of second tab
jPanel.add(secondaryTabsPane);
// add new panel to main tabs pane
mainTabsPane.addTab("Second tab", jPanel);
frame.getContentPane().add(mainTabsPane);
frame.setVisible(true);除此之外,您还直接引用了另一个类中的一个变量,这里是tabPane.addTab("bsm_export", exp.tab);。您不应该这样做,而是应该将其设置为私有,并提供getter/setter来访问它。还有,为什么你有这么复杂的代码结构,为这么小的事情,显示按钮的标签!?也要始终遵循Java编码公约,类名不应以小字符开头。
https://stackoverflow.com/questions/15108904
复制相似问题