我卡与如何调整所述第三按钮成为相同的大小等其它两个,并将其放置在底部。

class ControlFrame extends JFrame 
    implements Runnable
{
    JButton jb_inc = new JButton();
    JButton jb_zero = new JButton();
    JButton jb_dec = new JButton();

    ControlFrame() {
        super("Control Frame");
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    ControlFrame(int x,int y, int w, int h) {
        this();
        this.setBounds(x, y, w, h);
        this.setVisible(true);

        jb_inc.setBounds(10,10,90,20);
        jb_zero.setBounds(10,40,90,20);
        jb_dec.setBounds(10,60,90,20);

        jb_inc.setVisible(true);
        jb_zero.setVisible(true);
        jb_dec.setVisible(true);

        this.getContentPane().add(jb_inc);
        this.getContentPane().add(jb_zero);
        this.getContentPane().add(jb_dec);

    }

    public void run() {
    }
}

public class Counting_Machine 
{
    public static void main(String[] args) {
        ControlFrame cf = new ControlFrame(0,200,80,150);
    }
}
有帮助吗?

解决方案

两个建议:

1)把共同的东西到实例初始化块。我个人不寒而栗每当我看到一个调用“这个()”。

{     this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); }

ControlFrame() {     超级(“控制帧”); }

ControlFrame(INT的x,INT Y,INT瓦特,INT 1H) {     超级(“控制帧”);     ... }

2)I将摆脱该x,Y,W,H ...构造亲自我有一个称为WindowUtils类,其具有计算出的屏幕尺寸的“位置”的方法,然后使用在以传递的值创建一个窗口,在屏幕的相对大小。然后创建该窗口中的代码调用。我更喜欢具有少的构造尽可能(经常是0或1,我很少有两个或更多个)。

3)this.getContentPane()添加(jb_inc);现在可以写成附加(jb_inc); - 因为JDK 1.5我认为

4)永远不会调用覆写投放方法(所有构造函数里面的东西,你以前有这个)。如果子类都重写“添加”,你可以看到的东西打破。所以,你可以调用super.add(),或做其他方法的补充,或者使你的级决赛。

现在回答你的问题...: - )

您需要使用布局管理得到你想要的东西。

根据你想要什么,你可能想使用一个BorderLayout的,所以你可以得到底部的按钮。

其他提示

我建议你阅读从Swing教程中的部分上启动使用布局管理器你的代码将无法工作,因为你正在尝试3个组件添加到BorderLayout的该“中心”,这是行不通的。选择一个布局管理,更好地满足您的需求。

有无需利用布局管理时使用的setBounds(...)方法。布局管理器的工作是基于布局管理规则的部件定位。每个按钮的首选大小应该是相同的,因为你还没有添加任何文字的按钮。

此外,存在是不需要的按钮调用调用setVisible(),所有Swing组件都默认可见的,除了顶层容器(JFrame中,的JDialog)。

既然你的一切设定界限,你并不需要一个LayoutManager的。设置您的布局管理为null,那么你可以定位自己的一切,因为你是在你的例子。

this.setLayoutManager(null)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top