在JAVA中单击按钮打开新选项卡
我有一个在JAVA中单击按钮打开新选项卡,java,jtabbedpane,Java,Jtabbedpane,我有一个JFrame和两个jpanelJframe包含JTabbedPane,MenuBar和一个menuItem。当我单击菜单项时,一个面板被添加到JTabbedPane。守则如下: private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: NewJPanel jp = new NewJPanel();
JFrame
和两个jpanel
Jframe
包含JTabbedPane
,MenuBar
和一个menuItem
。当我单击菜单项
时,一个面板被添加到JTabbedPane
。守则如下:
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
NewJPanel jp = new NewJPanel();
jTabbedPane1.add("Panel",jp);
}
它工作得很好。此面板包含一个按钮。我希望在单击按钮时,在JTabbedPane
中添加一个新面板。对于按钮的操作执行
方法,我有以下代码-
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NewJFrame1 jf = new NewJFrame1();
jf.addPanel();
}
addPanel是我在JFrame中定义的方法。addPanel()
的代码为
public void addPanel()
{
System.out.println("Method Called");
NewJPanel1 jp1 = new NewJPanel1();
jTabbedPane1.add("Panel1",jp1);
}
但当我点击按钮时,我得到了“调用方法”。这意味着正在调用该方法,但该面板未添加到JTabbedPane。
请帮忙
在JFrame中公开JTabbedPane1之后,我也在按钮的actionPerformed
方法的代码中尝试了这一点-
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
NewJFrame1 jf = new NewJFrame1();
NewJPanel1 pane = new NewJPanel1();
jf.jTabbedPane1.add("Panel1",pane);
}
但这也不是在添加面板。
我该怎么办 您的代码包含以下两行错误:
public void createPage1() {
panel1 = new JPanel();
panel1.setLayout(null);
JLabel label1 = new JLabel("Username:");
label1.setBounds(10, 15, 150, 20);
panel1.add(label1);
JTextField field = new JTextField();
field.setBounds(10, 35, 150, 20);
panel1.add(field);
JLabel label2 = new JLabel("Password:");
label2.setBounds(10, 60, 150, 20);
panel1.add(label2);
JPasswordField fieldPass = new JPasswordField();
fieldPass.setBounds(10, 80, 150, 20);
panel1.add(fieldPass);
JButton login=new JButton("login");
login.setBounds(10, 120, 80, 25);
panel1.add(login);
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel4=new JPanel();
//panel4.setLayout(null);
panel4.add(new JLabel("welcome buddy"));
tabbedPane.addTab("Page 4", panel4);
}
});
}
NewJFrame1 jf=newnewjframe1();
jf.addPanel()
您必须在同一JFrame上工作,实际上您是在新的隐藏JFrame上创建窗格
我改编了您的示例,它正在发挥作用:
public void addPanel()
{
System.out.println("Method Called");
JPanel jp1 = new JPanel();
jTabbedPane1.add("Panel1",jp1);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.addPanel();
}
您的代码包含以下两行错误: NewJFrame1 jf=newnewjframe1(); jf.addPanel() 您必须在同一JFrame上工作,实际上您是在新的隐藏JFrame上创建窗格 我改编了您的示例,它正在发挥作用:
public void addPanel()
{
System.out.println("Method Called");
JPanel jp1 = new JPanel();
jTabbedPane1.add("Panel1",jp1);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.addPanel();
}
你的问题虽然范围很广,但由于大量细节的混乱,很难理解。请考虑用一种不那么复杂的方式修改你的问题。“艾伦,我想在按钮点击上添加一个新的标签(面板)到JTabDeBean.OK,还有一件事我想澄清:你想让这个标签成为可以无限多次添加的东西吗?或者你有一个特定的标签,你想只显示一次吗?前一种情况的一个例子可能是web浏览器中的“添加新选项卡”功能。后一种情况的示例可能是“显示/隐藏”类型的按钮。@Allan First one(如浏览器新选项卡)新选项卡是否有自己的actionlistener?如果没有,我可以帮你。你的问题虽然范围很广,但由于大量细节的混乱,很难理解。请考虑用一种不那么复杂的方式修改你的问题。“艾伦,我想在按钮点击上添加一个新的标签(面板)到JTabDeBean.OK,还有一件事我想澄清:你想让这个标签成为可以无限多次添加的东西吗?或者你有一个特定的标签,你想只显示一次吗?前一种情况的一个例子可能是web浏览器中的“添加新选项卡”功能。后一种情况的示例可能是“显示/隐藏”类型的按钮。@Allan First one(如浏览器新选项卡)新选项卡是否有自己的actionlistener?如果没有,我可以帮你。