【问题标题】:How do I adjust Button size in Keyboard application?如何在键盘应用程序中调整按钮大小?
【发布时间】:2011-08-16 04:07:51
【问题描述】:

我正在为我的班级编写一个 java 应用程序。这是一个电话键盘。我几乎完成了它。我只需要让数字显示我只是不知道如何更改数字按钮的大小。到目前为止我所做的一切都在编译时导致错误。

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.Graphics;
import javax.swing.JOptionPane;
import javax.swing.JApplet;
import javax.swing.JFrame;
import java.awt.event.*;

public class TelephoneKeypad extends javax.swing.JFrame
{


    public TelephoneKeypad()
    {
        Panel pnlKeyPad = new Panel();
          GridLayout gridLayout1 = new GridLayout();
          Button btnZero = new Button();
          Button btnOne = new Button();
          Button btnTwo = new Button();
          Button btnThree = new Button();
        Button btnFour = new Button();
          Button btnFive = new Button();
          Button btnSix = new Button();
          Button btnSeven = new Button();
          Button btnEight = new Button();
          Button btnNine = new Button();
          Button btnStar = new Button();
          Button btnHash = new Button();

        TextField tfNumber = new TextField(15);
          Button btnDial = new Button();
          BorderLayout borderLayout1 = new BorderLayout();
          Panel pnlNumberEntry = new Panel();
          FlowLayout flowLayout1 = new FlowLayout();





            btnOne.setLabel("1");
            btnTwo.setLabel("2");
            btnThree.setLabel("3");
            btnFour.setLabel("4");
            btnFive.setLabel("5");
            btnSix.setLabel("6");
            btnSeven.setLabel("7");
            btnEight.setLabel("8");
            btnNine.setLabel("9");
            btnStar.setLabel("*");
            btnZero.setLabel("0");
            btnHash.setLabel("#");
            btnDial.setLabel("Dial");

            pnlNumberEntry.setLayout(flowLayout1);
            pnlKeyPad.setLayout(gridLayout1);
            this.setLayout(borderLayout1);
            this.add(pnlNumberEntry, BorderLayout.NORTH);
            pnlNumberEntry.add(tfNumber, null);
            pnlNumberEntry.add(btnDial, null);
            this.add(pnlKeyPad, BorderLayout.CENTER);
            pnlKeyPad.add(btnOne, null);
            pnlKeyPad.add(btnTwo, null);
            pnlKeyPad.add(btnThree, null);
            pnlKeyPad.add(btnFour, null);
            pnlKeyPad.add(btnFive, null);
            pnlKeyPad.add(btnSix, null);
            pnlKeyPad.add(btnSeven, null);
            pnlKeyPad.add(btnEight, null);
            pnlKeyPad.add(btnNine, null);
            pnlKeyPad.add(btnStar, null);
            pnlKeyPad.add(btnZero, null);
            pnlKeyPad.add(btnHash, null);
        }

            public static void main(String args[])
                {
                TelephoneKeypad kpad = new TelephoneKeypad();
                kpad.setBounds(500, 500, 500, 500);
                kpad.setVisible(true);
    }
 }

【问题讨论】:

  • 您的问题被标记为 Swing 标记并且您使用的是 JFrame,但您的所有其他组件都是 AWT 组件。不要在 Swing 应用程序中混合 AWT 组件。确保您使用的组件以“J”开头。

标签: java swing


【解决方案1】:

如何在键盘应用程序中调整按钮大小?

查看我对Removing the three dots “…” from a JButton? 的回答,重新使用运行时参数调整字体大小。

【讨论】:

    【解决方案2】:

    参考How to Use GridLayout

    同时参考GridLayout的构造函数


    同时尽量不要在轻量级组件 (javax.swing.JFrame) 上添加重量级组件 (java.awt.Button)。

    因为 Awt 使用原生 GUI 小部件, 您的操作系统知道它们并处理 将它们放在彼此面前, 等等。而使用 Swing 你的小部件 只是 a 内无意义的像素 窗户;摆动手柄​​决定如何 您的小部件布局和堆叠。混合 两者高度不受支持,可以 导致荒谬的结果,例如 隐藏一切的本机按钮 否则在他们所在的对话框中 居住,因为其他一切都是 使用 Swing 创建。
    - What is the difference between swing and AWT?

    【讨论】:

    • +1 井点混合重质和轻质成分。建议永远不要混合这两种类型的对象。如果你必须在这里是一个伟大的tutorial 解释会发生什么。
    【解决方案3】:

    我有几个建议:

    • 在调用其构造函数时设置 GridLayout 常量。例如,GridLayout gridLayout1 = new GridLayout(0, 3);
    • 不要设置 GUI 的边界,而是让 GUI 的布局管理器根据其首选大小为您执行此操作。
    • 添加所有组件后不要忘记在 JFrame 上调用 pack()
    • 我通常在调用pack(); 之后和调用setVisible(true); 之前调用setLocationRelativeTo(null);
    • 不要忘记在类的 (JFrame) 构造函数中调用 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    • 设置按钮大小的一种方法是将按钮的字体设置为更大。

    例如,

    import java.awt.*;
    import javax.swing.*;
    
    public class TPad extends JPanel {
       public static final String[][] BTN_TEXTS = {
          {"1", "2", "3"},
          {"4", "5", "6"},
          {"7", "8", "9"},
          {"*", "0", "#"}
       };
       private static final int GAP = 5;
       private static final int FONT_POINTS = 36;
       private static final Font BTN_FONT = new Font(Font.SANS_SERIF, Font.BOLD, FONT_POINTS);
    
       public TPad() {
          int rows = BTN_TEXTS.length;
          int cols = BTN_TEXTS[0].length;
          setLayout(new GridLayout(rows, cols, GAP, GAP));
          setBorder(BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP));
          for (int row = 0; row < BTN_TEXTS.length; row++) {
             for (int col = 0; col < BTN_TEXTS[row].length; col++) {
                JButton btn = new JButton(BTN_TEXTS[row][col]);
                btn.setFont(BTN_FONT);
                add(btn);
             }
          }
       }
    
       private static void createAndShowUI() {
          JFrame frame = new JFrame("TPad");
          frame.getContentPane().add(new TPad());
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.pack();
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
       }
    
       public static void main(String[] args) {
          java.awt.EventQueue.invokeLater(new Runnable() {
             public void run() {
                createAndShowUI();
             }
          });
       }
    }
    

    【讨论】:

    • @Boro:谢谢。我认为你今天的选票会用完,就像我即将做的那样(我只剩下 4 票了)。
    • 是的,我可能会。必须有人来判断所有这些答案,对吗? :) 再加上总有新的选票 :) 祝你一切顺利。
    【解决方案4】:

    您在没有任何参数的情况下实例化了GridLayout。如果你把它改成

    GridLayout gridLayout1 = new GridLayout(4,3);
    

    你会得到更好的视野。

    顺便说一句,如果你使用过一次布局对象,你可以简单地做

    pnlKeyPad.setLayout(new GridLayout(4,3));
    

    而不是

    GridLayout gridLayout1 = new GridLayout(4,3);
    pnlKeyPad.setLayout(gridLayout1);
    

    (与您的所有布局相关...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2011-11-26
      • 2015-11-12
      • 2014-04-19
      • 2021-11-03
      • 2013-05-22
      • 2011-05-30
      相关资源
      最近更新 更多