各位好,目前的情况是:一个JPanel 加了一个 JTabbedPane, 然后我想在上图中绿色区域添加一个组件,比方说JButton。
如果jtabbedpane.add("first",jpanel1); 这样还是添加了一个tab,我想要实现的是在这些tab的下面(也就是绿色框内),添加组件。各位有什么办法么?
如果jtabbedpane.add("first",jpanel1); 这样还是添加了一个tab,我想要实现的是在这些tab的下面(也就是绿色框内),添加组件。各位有什么办法么?
代码就直接添加,比如我以前写的这样的;
class Selectpanel extends JPanel implements ActionListener{
JTextField field1;
JTextArea area1;
JButton b1;
int t=0;
Selectpanel(){
setLayout(new BorderLayout());
b1=new JButton("查询");
field1=new JTextField(10);
area1=new JTextArea(10,20);
JPanel p1 =new JPanel(),p2 =new JPanel();
p1.add(new JLabel("输入查询的单词"));
p1.add(field1);p1.add(b1);
add(p1,"North");
p2.add(area1);
add(p2,"Center");
b1.addActionListener(this);
}
Jide现在已经部分开源了。
http://www.jidesoft.com/
直接实现的话,应该是不支持的。间接实现的话,可以考虑用绝对定位布局,相当于两个组件进行叠放;
其中空白区域组件要叠放在JTabbedPane的上层。不过十分不推荐这么做,绝对定位的话,布局自动调整等便捷性优势就没了。
import java.awt.Component;
import java.awt.Graphics;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;public class Test { public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setContentPane(new MyPanel());
jf.setSize(300, 300);
jf.setVisible(true);
jf.setLocationRelativeTo(null);
}
}class MyPanel extends JPanel{
public MyPanel(){
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabPlacement(SwingConstants.LEFT);
tabbedPane.addTab("Option",getOptionPanel());
tabbedPane.addTab("View", getViewPanel());
tabbedPane.addTab("First", getFirstPanel());
tabbedPane.add(new JButton("Second"), 3);
setLayout(new BorderLayout());
add(tabbedPane,BorderLayout.CENTER);
} private JPanel getFirstPanel() {
return new JPanel();
} private JPanel getViewPanel() {
return new JPanel();
} private JPanel getOptionPanel() {
return new JPanel();
}
}