2013-11-15 21 views
0

根据标题,我如何创建用户确定的JLabel和JTextfield的动态大小?如何创建用户定义的JLabel,JTextField?

我有一个Main.java这需要在另一个文件(Design3.java),但我遇到的问题是我如何通过从Main.javaDesign3.java

这里的价值是我的代码用户输入和我创建一个JFrame为Design3.java文件。基本上我被卡住了,因为我从Main.java传递的值是Design3方法的最后一个变量的范围。我如何使其成为全球性的,因为我需要在全球范围内创建JLabel

int numberOfSellers; 

Label[] l = new Label[numberOfSellers]; 

public class Design3 { 

    int numberOfSellers; 

    Design3 nOS = new Design3(); 

    public Design3(int number_of_sellers) 
    { 
     nOS.setNumberOfSellers(number_of_sellers); 

     JFrame newWindow = new JFrame("Test"); 

     newWindow.setVisible(true); 
     newWindow.setSize(500,500); 
     newWindow.setLayout(null); 
    } 

    public void setNumberOfSellers(int num) 
    { 
     this.numberOfSellers = num; 
    } 

}

+2

您可以将维度设置为'Design3'的字段,然后通过将它们作为参数传递给构造函数来初始化这些值。也不要在Swing中使用空布局;学习布局管理器很重要 – vandale

+0

我将用户输入值传递给类的构造函数,但是再次,变量的作用域仅针对方法,我如何在全局中设置它?我刚刚介绍给JFrame并仍在学习。 – user273371

+0

你不想使用全局变量。你可能想要学习和使用观察者设计模式来允许一个类监听另一个类的变化。 –

回答

1

你一言以蔽之问题是:怎样才可以有一个类的对象改变另一个类对象的状态。通常这意味着让一个对象改变另一个对象的字段的状态。

评论:

  • 没有一个一刀切的答案这个,因为它是一个非常宽泛,过于笼统的问题。这就是为什么我们要求澄清你的问题,因为你的问题越具体,通常答案就越清楚。
  • 一般方法可以通过构造函数参数来改变对象字段的状态。所以你可以给你的GUI一个int字段说numberOfFoo然后给它一个构造函数参数来匹配,然后当一个类创建另一个类的实例时,它可以传递适当的数字到第一个类的构造函数中。
  • 或者你可以使用一个setter方法,如setFoo(int foo)其中一个类可以通过数成其他类。

如果您有更具体的问题,那么您必须进一步描述它。例如,如果你想让一个对象监视另一个对象的字段并对变化作出响应,那么就像我的评论一样,你会想要使用某种类型的观察者设计模式机制。

+0

你的第二点和第三点激励了我。非常感谢。 – user273371

+0

@ user273371:不客气。祝你好运。 –

1

基于标题,如何创建由用户确定的JLabel的动态大小和 的JTextField?

你到底想干什么?您可以考虑创建一个自定义类,它扩展了JLabel和另一个自定义类,它扩展了JTextField

二,为什么Design3Design3一个实例?我在这里感觉到很多糟糕的设计。

三,看入Swing MVC架构。

+0

1)我想创建一个JLabel和JTextField的动态大小。例如,假设用户输入2,我创建了2个JLabel和2个JTextField。 2)我迷路了,所以我尝试了一个错误。 – user273371

+0

@ user273371:你让我困惑。您在上面的评论的一部分中提到您要为JLabel和JTexztField创建动态**大小**,而在另一部分中,您希望创建组件的动态**数量**。那么,这是什么?为什么在你原来的问题中忽略我的评论?如果你想得到更好的答案,你真的需要付出更多努力来澄清问题并提出更好的问题。 –

+0

@HovercraftFullOfEels如果我没有说清楚,我很抱歉。简单地说,例如当用户输入2时,我创建了2个JLabel和JTextField。 – user273371