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

Jos*_*One 1 java swing

我正在为我的班级编写一个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);
    }
 }
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

我有几个建议:

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

例如,

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();
         }
      });
   }
}
Run Code Online (Sandbox Code Playgroud)