JComponents не отображается с фоном изображения?

Мои компоненты не отображаются. Как это исправить?

Код:

import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class login implements ActionListener{ JTextField gusername; JTextField gpassword; static String username; static String password; void logini() throws IOException { JFrame window = new JFrame("Login"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(300, 250); window.setResizable(false); window.setVisible(true); JPanel mainp = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); window.add(mainp); BufferedImage myPicture = ImageIO.read(new File("c:\\bgd.png")); JLabel picLabel = new JLabel(new ImageIcon( myPicture )); mainp.add(picLabel, c); c.gridx = 0; c.gridy = 1; gusername = new JTextField(); gusername.setText("Username"); mainp.add(gusername, c); c.gridx = 0; c.gridy = 2; gpassword = new JTextField(); gpassword.setText(" password "); mainp.add(gpassword, c); c.gridx = 0; c.gridy = 3; JButton login = new JButton("Login"); mainp.add(login, c); login.addActionListener(this); login.setActionCommand("ok"); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equalsIgnoreCase("ok")){ try { this.username = (gusername.getText()); this.password = (gpassword.getText()); System.out.println("0"); } catch(NumberFormatException ex){ System.out.println("ERROR: Could not preform function: 7424"); } } } } 

Результат:

Вот сначала посмотрите этот небольшой пример, дайте мне знать, если вы понимаете, что здесь происходит. Тогда только мы будем идти дальше, медленно медленно. Попробуйте пройти этот пример, в котором я покажу вам, как рисовать на JPanel

 import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.*; public class PaintingExample { private CustomPanel contentPane; private void displayGUI() { JFrame frame = new JFrame("Painting Example"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); contentPane = new CustomPanel(); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new PaintingExample().displayGUI(); } }); } } class CustomPanel extends JPanel { private BufferedImage image; public CustomPanel() { setOpaque(true); setBorder(BorderFactory.createLineBorder(Color.BLACK, 5)); try { /* * Since Images are Application Resources, * it's always best to access them in the * form of a URL, instead of File, as you are doing. * Uncomment this below line and watch this answer * of mine, as to HOW TO ADD IMAGES TO THE PROJECT * http://stackoverflow.com/a/9866659/1057230 * In order to access images with getClass().getResource(path) * here your Directory structure has to be like this * Project * | * ------------------------ * | | * bin src * | | * --------- .java files * | | * package image(folder) * ( or | * .class 404error.jpg * files, if * no package * exists.) */ //image = ImageIO.read( // getClass().getResource( // "/image/404error.jpg")); image = ImageIO.read(new URL( "http://i.imgur.com/8zgHpH8.jpg")); } catch(IOException ioe) { System.out.println("Unable to fetch image."); ioe.printStackTrace(); } } /* * Make this one customary habbit, * of overriding this method, when * you extends a JPanel/JComponent, * to define it's Preferred Size. * Now in this case we want it to be * as big as the Image itself. */ @Override public Dimension getPreferredSize() { return (new Dimension(image.getWidth(), image.getHeight())); } /* * This is where the actual Painting * Code for the JPanel/JComponent * goes. Here we will draw the image. * Here the first line super.paintComponent(...), * means we want the JPanel to be drawn the usual * Java way first (this usually depends on the opaque * property of the said JComponent, if it's true, then * it becomes the responsibility on the part of the * programmer to fill the content area with a fully * opaque color. If it is false, then the programmer * is free to leave it untouched. So in order to * overcome the hassle assoicated with this contract, * super.paintComponent(g) is used, since it adheres * to the rules, and performs the same task, depending * upon whether the opaque property is true or false), * then later on we will add our image to it, by * writing the other line, g.drawImage(...). */ @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, this); } } 

Компиляция и запуск:

  1. Запустите командную строку / терминал / cmd. И перейдите в папку, указанную в папке « Проект »
  2. Теперь скомпилируйте код, используя:

    C: \ Project> javac -d bin src \ *. Java

  3. Теперь перейдите в папку bin , выполнив команду:

    C: \ Project> cd bin

  4. После того, как внутри папки bin , выполните следующую команду:

    C: \ Project \ bin> java PaintingExample

Вот код при использовании JLabel в качестве основы для изображения:

 import java.awt.*; import java.net.MalformedURLException; import java.net.URL; import javax.swing.*; public class LabelExample { private JPanel contentPane; private JLabel imageLabel; private void displayGUI() { JFrame frame = new JFrame("Label Example"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); contentPane = new JPanel(); contentPane.setOpaque(true); contentPane.setBorder( BorderFactory.createLineBorder(Color.BLACK, 5)); //imageLabel = new JLabel( // new ImageIcon( // getClass().getResource( // "/image/404error.jpg"))); try { imageLabel = new JLabel(new ImageIcon( new URL("http://i.imgur.com/8zgHpH8.jpg"))); } catch(MalformedURLException mue) { System.out.println( "Unable to get Image from" + "the Resource specified."); mue.printStackTrace(); } contentPane.add(imageLabel); frame.setContentPane(contentPane); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new LabelExample().displayGUI(); } }); } } 

Вот вывод обоих вышеперечисленных кодов:

404Error

 window.setVisible(true); should be invoked only after all the components have been added to the frame. void logini() throws IOException { JFrame window = new JFrame("Login"); JPanel mainp = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); window.add(mainp); BufferedImage myPicture = ImageIO.read(new File("c:\\bgd.png")); JLabel picLabel = new JLabel(new ImageIcon( myPicture )); mainp.add(picLabel, c); c.gridx = 0; c.gridy = 1; gusername = new JTextField(); gusername.setText("Username"); mainp.add(gusername, c); c.gridx = 0; c.gridy = 2; gpassword = new JTextField(); gpassword.setText(" password "); mainp.add(gpassword, c); c.gridx = 0; c.gridy = 3; JButton login = new JButton("Login"); mainp.add(login, c); login.addActionListener(this); login.setActionCommand("ok"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(500, 250); window.setResizable(false); window.setVisible(true); } 
  • drag and drop jlabel вокруг экрана
  • Как сделать редактор таблиц JComboBox иметь дизайн обычного JComboBox?
  • Моделирование поведения пружин
  • как использовать таймер поворота для запуска / остановки анимации
  • Swing vs JavaFx для настольных приложений
  • Как переключить JPanels внутри JFrame
  • Java KeyListener vs Keybinding
  • CubicCurve2D, соединяющий два экземпляра JInternalFrame
  • Как отключить JTextField
  • Сделать JScrollPane управление несколькими компонентами
  • Объяснение объяснения Java Event-Dispatching
  • Interesting Posts

    Gimp – объединить альфа из одного слоя, с изображением rgb другого

    Почему DateTime.ParseExact () не может анализировать «9/1/2009» с использованием «M / d / yyyy»

    Node.js – Как удалить порт из URL-адреса?

    Как я могу справиться со сканером (java)?

    Как включить административные ресурсы в Vista и XP?

    MVC – Передача данных с помощью RedirectToAction ()

    Передача изображения OpenCV на C ++ через сокет

    Резервное копирование / восстановление Android: как создать резервную копию внутренней базы данных?

    Как отключить отображение даты и времени в вертикальных расколах экрана GNU?

    При экспорте отчета в PDF смените шрифт

    Как настроить jacksonа в Wildfly?

    Разница между статической, автоматической, глобальной и локальной переменной в контексте c и c ++

    Является ли это ошибкой Matlab? У вас такая же проблема?

    Как можно десериализовать дочерний объект с динамическими (числовыми) именами клавиш?

    Отключить анимацию ячеек Excel 2013

    Давайте будем гением компьютера.