Металлическая пуска, с которой поставляется качание, очень уродлива и не может удовлетворить наши реальные потребности, поэтому нам нужно настроить наши любимые кнопки, такие как кнопка изображения и т. Д., Как показано на рисунке ниже.
Затем объясните, как это сделать.
(1) Найдите несколько хороших кнопок, но кнопки могут быть внутри картинки, поэтому нам нужно использовать Meitu Xiuxiu или PS, чтобы выбрать кнопки. Как показано на рисунке ниже:
(2) Просто сохраните его как прозрачный фон.
(3) Затем напишите мой класс кнопок:
Импорт javax.imageio.imageio; импортировать javax.swing.*; Импорт java.awt.*; Импорт java.awt.image.bufferedImage; открытый класс Newbutton Extens Jbutton {ImageIcon img; public newbutton (string icon) {super (); this.img = new Imageicon (demo.class.getresource (icon)); SetBorderPainted (false); SetContentAreafiled (false); setoPaque (false); setSize (img.geticonWidth (), img.geticonheight ()); try {bi = imageio.read (demo.class.getresource (icon)); } catch (Exception e) {joptionPane.showmessageDialog (это, «возможно, файл изображения не существует», «Исключение Imageio», JoptionPane.error_message); System.Exit (0); }} @Override public void paintComponent (Graphics g) {if (this.getModel (). Ispressed ()) {g.drawimage (img.getimage (), 1,1, это); } else {g.drawimage (img.getimage (), 0,0, это); } super.paintcomponent (g); } BufferedImage bi; int rgb, альфа; /*** Установите диапазон нажима кнопки только в непосредственной области изображения. */ @Override public boolean содержит (int x, int y) {try {rgb = bi.getrgb (x, y); alpha = (rgb >> 24) & 0xff; if (alpha == 0) {вернуть false; } else {return true; }} catch (arrayindexoutofboundsexception e) {// Когда прозрачная область ищет, getRgb бросает следующую таблицу из границ исключения возврата false; }}} Вышеупомянутая программа переписывала функцию содержит, чтобы гарантировать, что область щелчка партийной мыши ограничена действительной областью изображения.
(4) Напишите тест демо -класса:
импортировать javax.swing.*; Импорт java.awt.*; импортировать java.net.url; открытый класс демонстрация {public demo () {jframe jf = new jframe ("Тест на кнопку изображения произвольной формы"); JF.SetBounds (500,200,700 500); myjpanel jp = new myjpanel (demo.class.getresource ("bg.jpg")); jp.setlayout (null); newbutton jb1 = newbutton ("bt1.png"); JB1.SetLocation (44,44); JP.Add (JB1); jb1 = newbutton ("snowflower.png"); JB1.SetLocation (200,44); JP.Add (JB1); jb1 = new Newbutton ("bt2.png"); JB1.SetLocation (350,64); JP.Add (JB1); jb1 = new Newbutton ("bt3.png"); JB1.SetLocation (450,64); JP.Add (JP); jf.setDefaultCloseoPeration (jframe.exit_on_close); jf.setvisible (true); } public static void main (string [] args) {new demo (); } частный класс myjpanel расширяет jpanel {imageicon bg; public myjpanel (url bg) {this.setopaque (false); // быть установленным для прозрачного. this.bg = new Imageicon (bg); } // Используется для установки фонового изображения @Override public void paintcomponent (Graphics g) {g.drawimage (bg.getimage (), 0,0, this.getwidth (), this.getheight (), this); Super.PaintComponent (G); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.