我在Netbeans中创建了JFrame类,并使用生成器添加了jPanel。我还有类,它扩展了JPanel。现在我想创建这个类的对象,并将他添加到JFrame中我的面板所在的位置,但我找不到正确的方法,因为我尝试的所有内容都没有结果
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Frame f = new Frame();
jPanel1 = new MyPanel();
f.pack();
f.setVisible(true);
}
});好的,也许我会给出更精确的例子:
第一个文件:
class MyPanel extends javax.swing.JPanel {
public MyPanel() {
initComponents();
}
}另一个文件,带有Frame:
public class Frame extends javax.swing.JFrame {
public Frame() {
initComponents();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Frame f = new Frame();
MyPanel p = new MyPanel();
jPanel1 = p;
}
});
}
private javax.swing.JButton jButton1;
private javax.swing.JPanel jPanel1;并且我想在jPanel1 - object MyPanel的位置设置
发布于 2012-05-17 01:55:29
您的问题:您的MyPanel实例没有添加到主机中。
解决方案:将MyPanel实例添加到主框架的内容窗格中。
类似于:
JFrame f = new JFrame();
MyPanel jPanel1 = new MyPanel();
f.getContentPane().add(jPanel1 );
f.pack();
f.setVisible(true);发布于 2012-05-17 02:03:29
上面的答案是正确的-你需要将这个MyPanel添加到框架的contentPane中。
此外,您可能应该使用Swing而不是普通的AWT。代码将如下所示:
SwingUtilities.invokeLater(new Runnable() {
@Override //annotation if you are using Java >= 1.5
public void run() {
JFrame f = new JFrame();
MyPanel jPanel1 = new MyPanel();
f.getContentPane().add(jPanel1);
f.pack();
f.setVisible(true);
}
});发布于 2012-05-17 01:53:16
您需要将面板添加到框架中:
f.add(jPanel1)下面的独立代码适用于我:
public static void main(String[] args)
{
Frame f = new Frame();
Panel jPanel1 = new Panel();
jPanel1.add(new Button("Hello"));
f.add(jPanel1 );
f.pack();
f.setVisible(true);
}https://stackoverflow.com/questions/10623935
复制相似问题