swing 的问题 当我改变JFrame的大小的时候.怎样才能使它里面的组件大小不变啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我刚注册这个论坛,不知道怎么发帖子,所以只有把我的问题发到这个老兄的帖子里面!请大家帮我看看我这个java applet程序(小球做自由反弹运动)能不能运行(不好意思,我的机子里面没有jdk),如果不对,错误在那里,谢谢大家!import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;public class p extends JApplet implements Runnable{int x,y;Thread b=null;public void init(){Container cp=getContentPane();x=70;y=0;}public void start(){b= new Thread(this);b.start();}public void run(){int dm=10,dn=10;while(true){if(x<=0){x=10;dn=10;}if(x>=240){x=240;dn=-10;}if(y<=0){y=10;dm=10;} if(y>=140){y=140;dm=-10;}x+=dn;y+=dm ;repaint();try{b.sleep(150);}catch(InterruptedException e){}}}public void paint(Graphics g){g.setColor(Color.green);g.fillRoundRect(0,0,250,250,10,10);g.SetColor(Color.red);g.fillOval(x,y,10,10);g.drawString("小球自由反弹运动",70,170);}}<applet code="p.class" width=300 height=240></applet> 多建几个面板面板是放组件窗口用borderLayout面板里用flowLayout lastsweetop() ,我按你的方法做了。但是我拖动窗口,改变窗口大小的时候,那些组件的位置都还是会改变啊..能给个具体的例子吗?谢谢 如果在BorderLayout布局中固定jButton大小,1.先在new JPanel,设布局panel.setLayout(flowLayout1);并设置JPanel.setPreferredSize(new Dimension(200, 70));2.再设置new jButton,jButton.setPreferredSize(new Dimension(200, 50));然后把jButton入到JPanel中,panel.add(jButton),再把JPanel放到BorderLayout布局中的某个方向.例子:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class rew extends JFrame { /** * Launch the application * @param args */ public static void main(String args[]) { try { rew frame = new rew(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the frame */ public rew() { super(); getContentPane().setLayout(new BorderLayout()); setBounds(100, 100, 500, 375); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JButton button = new JButton(); button.setText("New JButton"); getContentPane().add(button, BorderLayout.WEST); final JButton button_1 = new JButton(); button_1.setText("New JButton"); getContentPane().add(button_1, BorderLayout.NORTH); final JPanel panel = new JPanel(); panel.setBackground(new Color(255, 0, 255)); panel.setPreferredSize(new Dimension(180, 50)); panel.setLayout(new FlowLayout()); getContentPane().add(panel, BorderLayout.EAST); final JButton button_2 = new JButton(); button_2.setText("New JButton"); panel.add(button_2); final JButton button_1_1 = new JButton(); button_1_1.setText("New JButton"); panel.add(button_1_1); // }} 一般用Swing做界面几种方式GridBagLayout, 最复杂的方式, 组件随面板而动, 适合有Table, Tree, TextArea等等大组件存在的面板. 因为放大也不会影响效果, 而且看到的东西更多.BorderLayout, 这个简单.null, 没有Layout, 就是XY定位了, 大家都明白吧.如果不是特殊的需求, 用这3中绝对满足. Unicode表示汉字字节数的问题 Vector.add的问题 哪位大侠给讲讲SE是干什么的. 父线程与子线程的 jmf中怎么设置摄像头的输出大小? 新手请教各位大侠们:实现画图的程序要怎么实现? 下载问题 请教关于类库的问题 菜鸟问题(类,函数) 一个与技术无关问题 字符串查找替换问题! JCheckBox如何分组啊?
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
public class p extends JApplet implements Runnable
{
int x,y;
Thread b=null;
public void init()
{
Container cp=getContentPane();
x=70;
y=0;
}
public void start()
{
b= new Thread(this);
b.start();
}
public void run()
{
int dm=10,dn=10;
while(true)
{
if(x<=0)
{
x=10;
dn=10;
}if(x>=240)
{
x=240;
dn=-10;
}
if(y<=0)
{
y=10;
dm=10;
}
if(y>=140)
{
y=140;
dm=-10;
}x+=dn;
y+=dm ;
repaint();
try{b.sleep(150);}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
g.setColor(Color.green);
g.fillRoundRect(0,0,250,250,10,10);
g.SetColor(Color.red);
g.fillOval(x,y,10,10);
g.drawString("小球自由反弹运动",70,170);
}
}
<applet code="p.class" width=300 height=240></applet>
面板是放组件窗口用borderLayout
面板里用flowLayout
1.先在new JPanel,设布局panel.setLayout(flowLayout1);
并设置JPanel.setPreferredSize(new Dimension(200, 70));
2.再设置new jButton,jButton.setPreferredSize(new Dimension(200, 50));
然后把jButton入到JPanel中,panel.add(jButton),
再把JPanel放到BorderLayout布局中的某个方向.
例子:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class rew extends JFrame { /**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
rew frame = new rew();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public rew() {
super();
getContentPane().setLayout(new BorderLayout());
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JButton button = new JButton();
button.setText("New JButton");
getContentPane().add(button, BorderLayout.WEST); final JButton button_1 = new JButton();
button_1.setText("New JButton");
getContentPane().add(button_1, BorderLayout.NORTH); final JPanel panel = new JPanel();
panel.setBackground(new Color(255, 0, 255));
panel.setPreferredSize(new Dimension(180, 50));
panel.setLayout(new FlowLayout());
getContentPane().add(panel, BorderLayout.EAST); final JButton button_2 = new JButton();
button_2.setText("New JButton");
panel.add(button_2); final JButton button_1_1 = new JButton();
button_1_1.setText("New JButton");
panel.add(button_1_1);
//
}}
BorderLayout, 这个简单.
null, 没有Layout, 就是XY定位了, 大家都明白吧.如果不是特殊的需求, 用这3中绝对满足.