所以我只是检查,当我点击我的按钮时,它不会显示我的JPanel,任何想法为什么?
感谢。
我想要第三堂课展示,真的很感谢帮助 - 谢谢分配。
第一堂课 - JFrame课程。
import javax.swing.JFrame;
public class Frame {
public static void main(String[] args ) {
JFrame frame = new JFrame("JFrame Demo");
Panel panel1 = new Panel();
frame.add(panel1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setVisible(true);
}
}
第二课 - 第1小组
import javax.swing.JPanel;
import java.awt.CardLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Panel extends JPanel{
public Panel() {
setLayout(null);
final Panel2 panel2 = new Panel2();
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false);
panel2.setVisible(true);
}
});
btnNewButton.setBounds(62, 197, 224, 122);
add(btnNewButton);
}
}
第三课 - 第2小组(我想要展示)
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.CardLayout;
import javax.swing.JTextField;
public class Panel2 extends JPanel {
private JTextField textField;
public Panel2() {
setLayout(null);
setVisible(true);
textField = new JTextField();
textField.setBounds(84, 84, 290, 77);
add(textField);
textField.setColumns(10);
}
}
答案 0 :(得分:2)
您永远不会将panel2
添加到任何内容中。 JPanel
与JFrame
不同,setVisible
会让它神奇地出现。您需要将其添加到容器中。只需将其添加到Panel
。
同时避免使用null
布局。学习使用Layout Managers
另见Initial Threads。您想要从事件调度线程中运行您的swing应用程序,如此
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new Frame();
}
});
}
这看起来像是你可能试图按照CardLayout
所取得的成果行事。有关基本用法,请参阅此example。另请参阅How to Use Card Layout
答案 1 :(得分:0)
在第二个类中,在构造函数的第二行之后,你试过吗?
add(panel2);
看看是否有效。
答案 2 :(得分:-1)
将Panel.java修改为如下所示。告诉我这是否有利于您的需求:
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Panel extends JPanel{
Panel2 panel2 = null;
JButton btnNewButton = null;
public Panel() {
setLayout(null);
panel2 = new Panel2();
panel2.setBounds(5,5,300,500);
add(panel2);
showPanel2(false);
btnNewButton = new JButton("New button");
btnNewButton.setBounds(62, 197, 224, 122);
add(btnNewButton);
showButton(true);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showButton(false);
showPanel2(true);
}
});
}
public void showPanel2(boolean bshow)
{
panel2.setVisible(bshow);
}
public void showButton(boolean bshow)
{
btnNewButton.setVisible(bshow);
}
}