2016-01-22 103 views
1

没有什么是出现在Java相当新,我已经创建了一个主页和几个按钮,当我点击其中一个按钮时,它将主页面板可见性设置为false,打开一个新类并设置该类的Jpanel可见。当我切换JPanels

homePanel.setVisible(false); 
Goodsin Barcode = new Goodsin(); 
Goodsin.setVisible(true); 

但是,一旦它打开新的类“Goodsin”它不会显示任何按钮或TextFileds。我知道它是打开新的类作为System.out.println打印到控制台,但没有显示在JFrame中,我不知道为什么。

这是我的新类

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class Goodsin { 

    public JPanel Goodsin; 
    public JTextField item1; 
    public String code; 
    public JButton btn1; 

    public Goodsin() { 

     System.out.println("TEST"); 

     Goodsin = new JPanel(); 
     item1 = new JTextField(10); 
     btn1 = new JButton("Look up Barcode"); 

     Goodsin.setVisible(true); 

     Goodsin.add(item1); 
     item1.setSize(80, 30); 

     Goodsin.add(btn1); 
     btn1.setSize(80, 30); 

    } 

    public void getString(String code) { 
     System.out.println(code); 

    } 

} 

我敢肯定,我没有做与Jpanel正确的东西或添加的文本框或按钮,但我已经看到了所有的答案至今havnt工作的代码。

+0

如何创建一个名为Goodsin的属性? – Leo

+0

如果Goodsin尚未添加,则设置其可见性将无意义。 – Neil

回答

1

我建议你将你的面板添加到JFrame。您可以通过从类中扩展JFrame来完成此操作,或者只是在构造函数中实例化一个JFrame。然后,您可以根据需要简单地添加和删除(或设置可见/不可见)。尽管如此,请务必在更改可见性后验证JFrame/JPanel。

+0

我们在Main中有一个JFrame,当您点击进入Goodsin Class时它仍然可见,但它似乎并未将面板表单Goodsin Class添加到JFrame中。它只是返回一个空白的JFrame – user5654841

+0

你试过做nameOfJFrame.revalidate()和nameOfJPanel.revalidate()吗? – James

+0

好吧,我添加了一个新的JFrame到我的Goodins类,当我点击按钮去货物中打开一个新的JFrame并显示我需要什么,但是如何让它显示在我已经有的JFrame中,所以新窗口不打开? – user5654841

1

尝试做这样的事情:

Goodsin = new JPanel(); 
     item1 = new JTextField(10); 
     btn1 = new JButton("Look up Barcode"); 

     item1.setSize(80, 30); 
     Goodsin.add(item1); 

     btn1.setSize(80, 30); 
     Goodsin.add(btn1); 

    JFrame frame = new JFrame("JFrame Example"); 
     Goodsin.setLayout(new FlowLayout()); 
     frame.add(Goodsin); 
0

我建议你试试下面的代码:

public class Goodsin extends JFrame{ 

    public static void main(String[] args) { 
     Goodsin ui = new Goodsin(); 
     JTextField item1 = new JTextField(10); 
     JButton btn1 = new JButton("Look up Barcode"); 
     JPanel centralPanel = new JPanel(new FlowLayout()); 
     centralPanel.add(item1); 
     centralPanel.add(btn1); 
     item1.setSize(80, 30); 
     btn1.setSize(80, 30); 
     ui.add(centralPanel); 

     ui.pack(); 
     ui.setVisible(true); 

    } 
} 

一切都在我的例子中的主要方法做了,但是你仍然可以改善这种代码并以更好的方式重构它。

0

只需要设置Goodsin面板的边界或设置尺寸并添加主页框架