我的组件没有显示出来.我该如何解决?
码:
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 = …Run Code Online (Sandbox Code Playgroud) 我有一个使用CardLayout的类,它有两张卡片,上面有一个按钮.我希望能够做的是放置一个像背景一样的图像,例如Windows中的桌面背景.该程序最终将有几张不同的卡片,我希望能够在每张卡片上放置不同的背景.我已尝试过在本网站上提出的其他类似问题中提出的许多建议,以及通过Google搜索我能找到的任何建议,但我似乎无法让它发挥作用.我知道使用CardLayout我不能将面板放在面板上,因此将图像放在JPanel上是行不通的.所以我的问题是,根据下面发布的代码,我有更好的方法来设置我的布局,以便它更好地工作,而且,我应该如何处理显示图像,使其在按钮的背景中?任何帮助将不胜感激.
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Cards implements ActionListener {
private JPanel cards;
private JButton button1;
private JButton button2;
private Image backgroundImage;
public void addComponentToPane(Container pane) throws IOException {
backgroundImage = ImageIO.read(new File("background.jpg"));
//create cards
JPanel card1 = new JPanel()
{
@Override
public void paintComponent(Graphics g)
{
g.drawImage(backgroundImage, 0, 0, null);
}
};
JPanel card2 = new JPanel();
button1 = new JButton("Button 1");
button2 = new JButton("Button 2");
button1.addActionListener(this);
button2.addActionListener(this);
card1.add(button1); …Run Code Online (Sandbox Code Playgroud) import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Picture extends JFrame{
public static void main(String[] args){
new Picture();
}
public Picture(){
this.setTitle("Picture");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel();
ImageIcon pic = new ImageIcon("TestImage.jpg");
p.add(new JLabel(pic));
this.add(p);
this.pack();
this.setVisible(true);
System.out.println(pic);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码只是显示一个折叠的框架.我希望包(); 方法调用会调整我的.jpg图像周围的框架,对吗?
我已经可以听到第一个问题,是的,图像与我的项目包文件夹位于同一文件夹中.
我正在使用Eclipse IDE.
我还添加了println(); 声明查看Image引用返回的内容并返回"TestImage.jpg".我以为它会在内存中返回图像的地址.
我整个上午一直在阅读论坛,如果不复制和使用其他人更复杂的代码,我无法找到任何可以帮助我的东西.我尽量保持这个尽可能简单,这样我就不会混淆自己.
在此先感谢您的帮助.
我正在写一个程序,要求我有一个按钮,上面有一个图像,但到目前为止,我还没有能够让它工作.我已经检查了这个网站上的其他几个帖子,包括如何将图像添加到JButton.
我的代码:
public class Tester extends JFrame
{
public Tester()
{
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
setTitle("Image Test");
setSize(300,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JButton button = new JButton();
try
{
Image img = ImageIO.read(getClass().getResource("Images\\BBishopB.gif"));
button.setIcon(new ImageIcon(img));
}
catch (IOException ex) {}
button.setBounds(100,100,100,100);
panel.add(button);
}
public static void main(String[] args)
{
Tester test = new Tester();
test.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
当此代码运行时,会出现错误:线程"main"中的异常java.lang.IllegalArgumentException:input == null!此错误发生在以下行:
Image img = ImageIO.read(getClass().getResource("Images\\BBishopB.gif"));
Run Code Online (Sandbox Code Playgroud)
我不认为这个错误是由于java代码找不到文件,因为我的Images文件夹在src文件夹中(我正在使用Eclipse),如上面链接所推荐的那样.
有没有人对问题可能有什么想法?
谢谢.
我想在面板中设置一个图像图标。我正在尝试这样做;
JLabel label = new JLabel(new ImageIcon("logo.jpg"))
panelHeader.add(label);
add(panelHeader);
Run Code Online (Sandbox Code Playgroud)
但图像没有显示。任何建议我做错了什么?
我想添加ImageIcontoJMenuItem来说明诸如New或save 之类的操作。
为什么以下代码对我不起作用?
JMenu file = new JMenu("File");
menubar.add(file);
JMenuItem newgame = new JMenuItem("New");
file.add(newgame);
newgame.setIcon(new ImageIcon("/Project1/zkre/new.gif"));
Run Code Online (Sandbox Code Playgroud) 我在JFrame类上使用netbeans builder"design".我有传统的JFrame,我在其中添加了一个JPanel(使用构建器).
现在在代码中,我想为这个面板添加一个背景,如下所示:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
addBackground();
}
private void addBackground()
{
Image bgImage;
try {
bgImage = ImageIO.read(new File("src/general/Mockup.png"));
jPanel1.add(new NewJFrame.ImagePanel(bgImage));
jPanel1.repaint();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何东西,只是一个空的JFrame/JPanel.
顺便说一下,我将它用于ImagePanel代码
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private Image image;
ImagePanel(Image image) { …Run Code Online (Sandbox Code Playgroud) 我尝试使用显示图像JLabel。这是我的项目导航器:

我想SettingsDialog.java使用以下代码显示图像:
String path = "/images/sidebar-icon-48.png";
File file = new File(path);
Image image;
try {
image = ImageIO.read(file);
JLabel label = new JLabel(new ImageIcon(image));
header.add(label); // header is a JPanel
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
代码抛出异常:无法读取输入文件!
是不是图片路径不对?
我有大量问题打包我的java程序,其中包含图像到jar转换为可执行文件.图像已用于程序和按钮的背景中.请参阅下图,其中显示了我希望转换为jar的程序.

如您所见,程序运行正常.我创建了相同的程序,没有自定义背景和自定义按钮,不包含图像,我成功将其打包到一个jar中,然后打包成.exe文件.
关于绘制我的背景,我这样做如下:
public void paintComponent(Graphics g) {
Image img = new ImageIcon("imgs/Bgnd1.jpg").getImage();
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
g.drawImage(img, 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)
关于使用图像创建我的4个自定义按钮,我正在执行以下操作:
// Prepare rollover images
ImageIcon F1 = new ImageIcon("imgs/btn_f1_not_selected.jpg");
ImageIcon F1rollOver = new ImageIcon("imgs/btn_f1_selected.jpg");
// Create F1 button
final JButton btnF1 = new JButton(F1);
//btnF1.setOpaque(false);
btnF1.setContentAreaFilled(false);
btnF1.setBorder(null);
btnF1.setBorderPainted(false);
btnF1.setFocusPainted(false);
btnF1.setRolloverIcon(F1rollOver);
Run Code Online (Sandbox Code Playgroud)
我尝试将图像放在bin文件夹中,并且为了创建背景,我改变了上述关于图像的声明/获取的方法.
public void paintComponent(Graphics g) {
String path = "Bgnd11.jpg";
java.net.URL imgURL = getClass().getResource(path);
Image img = new ImageIcon(imgURL).getImage(); …Run Code Online (Sandbox Code Playgroud) 我是一名新程序员,刚刚开始使用Eclipse.以前,我使用JGRASP,当我想要一个按钮添加图像时,我所做的就是Image在类的文件夹中创建一个文件夹并写入:
setIcon(newImageIcon(this.getClass().getResource("/Images/name.png")));
我用Eclipse尝试了同样的事情,但是我收到了一个main:NullPointerException错误.
我已经阅读了另一篇文章并source folder在我的项目中添加了一个名为Images但没有改变的项 以下是我遇到问题的代码段:
resetButton.setIcon(newImageIcon(this.getClass().getResource("/Images/helpIcon.png")));