2013-03-26 104 views
1

我需要键盘上数字键盘的布局。我得到了大部分,我唯一的问题是,“进入”按钮应该是直到底部。但是,当我使用Panel p4并将其设置为SOUTH时,“enter”按钮没有到达底部。这是代码。如何获得数字键盘布局

这是它看起来像

enter image description here

这就是我想要的

enter image description here

public class NumPad extends Applet 
{ 
    public void init() { 
    setLayout(new BorderLayout()); 

    Panel p1 = new Panel(); 
    p1.setLayout(new GridLayout(1, 0)); 
    p1.add(new Button("Num")); 
    p1.add(new Button("/")); 
    p1.add(new Button("*")); 
    p1.add(new Button("-")); 
    add(p1, BorderLayout.NORTH); 

    Panel p2 = new Panel(); 
    p2.setLayout(new GridLayout(3, 0)); 
    p2.add(new Button("7")); 
    p2.add(new Button("8")); 
    p2.add(new Button("9")); 
    p2.add(new Button("4")); 
    p2.add(new Button("5")); 
    p2.add(new Button("6")); 
    p2.add(new Button("1")); 
    p2.add(new Button("2")); 
    p2.add(new Button("3")); 
    add(p2, BorderLayout.CENTER);  

    Panel p4 = new Panel(); 
    p4.setLayout(new GridLayout(1, 0, 30, 40)); 
    p4.add(new Button("0")); 
    p4.add(new Button(".")); 
    add(p4, BorderLayout.SOUTH);  

    Panel p3 = new Panel(); 
    p3.setLayout(new GridLayout(2, 0)); 
    p3.add(new Button("+")); 
    p3.add(new Button("Enter")); 
    add(p3, BorderLayout.EAST);  
} 
} 
+0

可以添加图片或因此看到它看起来怎么样,你如何想要它? – Smit 2013-03-26 17:30:08

+0

我没有20个代表。对不起,但这里是它应该看起来像什么的链接。 http://i.imgur.com/bjdLRfj.png,这是我有http://i.imgur.com/6XIUNEh.png – FJam 2013-03-26 17:34:47

回答

1

无需重新安排好一切,你可以simlpy巢p2p4到另一个JPanel,并添加新的面板在中心。只要您不在“主”面板的SOUTH中添加任何内容,您就很好。

顺便说一句,不要使用awt组件,直接进入Swing的。这将节省你的时间很多,避免令人不安的行为(考虑扩大JApplet代替Applet

看到这个小例子:

import java.awt.BorderLayout; 
import java.awt.GridLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class NumPad extends JPanel { 
    public NumPad() { 
     setLayout(new BorderLayout()); 

     JPanel top = new JPanel(new GridLayout(1, 0)); 
     top.add(new JButton("Num")); 
     top.add(new JButton("/")); 
     top.add(new JButton("*")); 
     top.add(new JButton("-")); 
     add(top, BorderLayout.NORTH); 
     JPanel p2p4 = new JPanel(new BorderLayout()); 
     JPanel p2 = new JPanel(new GridLayout(3, 0)); 
     p2.add(new JButton("7")); 
     p2.add(new JButton("8")); 
     p2.add(new JButton("9")); 
     p2.add(new JButton("4")); 
     p2.add(new JButton("5")); 
     p2.add(new JButton("6")); 
     p2.add(new JButton("1")); 
     p2.add(new JButton("2")); 
     p2.add(new JButton("3")); 
     p2p4.add(p2, BorderLayout.CENTER); 

     JPanel p4 = new JPanel(); 
     p4.setLayout(new GridLayout(1, 0, 30, 40)); 
     p4.add(new JButton("0")); 
     p4.add(new JButton(".")); 
     p2p4.add(p4, BorderLayout.SOUTH); 
     add(p2p4); 
     JPanel p3 = new JPanel(); 
     p3.setLayout(new GridLayout(2, 0)); 
     p3.add(new JButton("+")); 
     p3.add(new JButton("Enter")); 
     add(p3, BorderLayout.EAST); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame(NumPad.class.getSimpleName()); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       NumPad numPad = new NumPad(); 
       frame.add(numPad); 
       frame.pack(); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 
+0

当我这样做时,由于某种原因,中心消失 – FJam 2013-03-26 18:34:08

+0

@FJam你确定你没有两次加入中心?如果您运行我提供的确切代码,问题是否仍然存在?如果没有,那么你的代码中可能有一些错误,你应该试着找出你的代码与我的不同。 – 2013-03-26 18:43:48

+0

哦谢谢,我得到它的工作,我错过了其中的一条线。 – FJam 2013-03-26 19:10:11

0

这只是BorderLayout的是如何工作的。 BorderLayout.EAST不会延伸到底部。

enter image description here

尝试以不同的方式different layout manager或重新安排你的组件。看到这个例子:

JPanel panel = new JPanel(); 
panel.setLayout(new BorderLayout()); 

setLayout(new BorderLayout()); 

Panel p1 = new Panel(); 
p1.setLayout(new GridLayout(1, 0)); 
p1.add(new Button("Num")); 
p1.add(new Button("/")); 
p1.add(new Button("*")); 
panel.add(p1, BorderLayout.NORTH); 

Panel p2 = new Panel(); 
p2.setLayout(new GridLayout(3, 0)); 
p2.add(new Button("7")); 
p2.add(new Button("8")); 
p2.add(new Button("9")); 
p2.add(new Button("4")); 
p2.add(new Button("5")); 
p2.add(new Button("6")); 
p2.add(new Button("1")); 
p2.add(new Button("2")); 
p2.add(new Button("3")); 
panel.add(p2, BorderLayout.CENTER); 

Panel p4 = new Panel(); 
p4.setLayout(new GridLayout(1, 0, 30, 40)); 
p4.add(new Button("0")); 
p4.add(new Button(".")); 
panel.add(p4, BorderLayout.SOUTH); 

Panel p3 = new Panel(); 
p3.setLayout(new GridLayout(3, 0)); 
p3.add(new Button("-")); 
p3.add(new Button("+")); 
p3.add(new Button("Enter")); 

add(panel, BorderLayout.CENTER); 
add(p3, BorderLayout.EAST); 
+0

你知道我可以使用它的工作布局吗? – FJam 2013-03-26 18:11:01

+0

@FJam你应该可以通过BorderLayout和GridLayout的组合来完成它。查看本页面上已有的几个示例。 – whiskeyspider 2013-03-26 18:12:30