当前位置: 技术问答>java相关
请帮忙看看这短程序!
来源: 互联网 发布时间:2015-06-30
本文导语: import javax.swing.*; public class choice { public static void main(String args[]) { Frame frame; Panel panel; Choice ch; frame=new Frame("my frame"); frame.setVisible(true); frame.setSize(300,300); panel=new Panel(); frame.add(panel); ch=new Choice(...
import javax.swing.*;
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setVisible(true);
frame.setSize(300,300);
panel=new Panel();
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
}
}
怎么只能看到一个空的Frame呢?看不到choice!
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setVisible(true);
frame.setSize(300,300);
panel=new Panel();
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
}
}
怎么只能看到一个空的Frame呢?看不到choice!
|
还有frame.setVisible(true);也应该放到程序结尾
逻辑也比较清楚
逻辑也比较清楚
|
import javax.swing.*;
import java.awt.*;
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setSize(300,300);
panel=new Panel();
panel.setLayout(new BorderLayout());//好像是这个方法
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
frame.setVisible(true);
}
}
import java.awt.*;
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setSize(300,300);
panel=new Panel();
panel.setLayout(new BorderLayout());//好像是这个方法
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
frame.setVisible(true);
}
}
|
frame.setVisible(true);
应该放在最后一句:
import java.awt.*;
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setSize(300,300);
panel=new Panel();
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
frame.setVisible(true);
}
}
应该放在最后一句:
import java.awt.*;
public class choice
{
public static void main(String args[])
{
Frame frame;
Panel panel;
Choice ch;
frame=new Frame("my frame");
frame.setSize(300,300);
panel=new Panel();
frame.add(panel);
ch=new Choice();
ch.addItem("choice 1");
ch.addItem("choice 2");
panel.add(ch);
frame.setVisible(true);
}
}
|
其实这很好解决,因为Frame对象在缺省情况下默认的布局管理器是
new BorderLayout(),所以生成的frame对象在add(panel)时必须用下面的形式: frame.add("CENTER",panel);
或 frame.add(panel,BorderLayout.CENTER);
你试试吧,应该是可以了。
new BorderLayout(),所以生成的frame对象在add(panel)时必须用下面的形式: frame.add("CENTER",panel);
或 frame.add(panel,BorderLayout.CENTER);
你试试吧,应该是可以了。
|
你用的是 import javax.swing.*;
可程序中为什么用Frame而不用JFrame呢,如果用JFrame的话,应该用下面的语句: JFrame frame=new JFrame();
frame.getContentPane().add(panel,BorderLayout.CENTER);
JFrame是swing组件,而Frame是原来的awt里的组件,我认为JFrame比Frame要好。
可程序中为什么用Frame而不用JFrame呢,如果用JFrame的话,应该用下面的语句: JFrame frame=new JFrame();
frame.getContentPane().add(panel,BorderLayout.CENTER);
JFrame是swing组件,而Frame是原来的awt里的组件,我认为JFrame比Frame要好。