在 JLabel 中向 JPanel 添加图像
Adding an image to JPanel within JLabel
我是 Java 的新手,我正在尝试制作一个 JFrame,其中有一个 JPanel,一个图像在 JLabel 中。然后通过将 JLabel 添加到 JPanel 它一定可以正常工作吗?但是,这是在 docs.oracle.com...
上完成的方式
这是代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Interface {
private JPanel panel;
private JPanel buttonPane;
private JLabel label;
private JLabel label2;
private JTextField textfield;
private JTextField textfield2;
private JTextField textfield3;
private JTextField textfield4;
private JTextField textfield5;
private JButton button;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
public static void main(String[] args) {
new Interface();
}
public Interface() {
JFrame frame = new JFrame("Vormen");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 300);
frame.setLocationRelativeTo(null);
panel = new JPanel();
buttonPane = new JPanel();
button = new JButton("cirkel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JLabel label3 = new JLabel(new ImageIcon("images/cirkel.png"));
panel.add(label3);
panel.revalidate();
panel.repaint();
buttonPane.add(button);
buttonPane.add(button2);
buttonPane.add(button3);
frame.add(buttonPane, BorderLayout.NORTH);
frame.add(panel);
frame.setVisible(true);
}
}
您的应用程序找不到“"images/cirkel.png"。您别无选择:
- 使用绝对路径(就像我在下面修改后的代码中所做的那样)。
- 使用资源(有数百个很好的教程如何做到这一点)。
我使用绝对路径进行快速破解。对于任何严肃的事情,我会选择资源,因为它们与您的应用程序捆绑在一起。
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Interface {
private JPanel panel;
private JPanel buttonPane;
private JLabel label;
private JLabel label2;
private JTextField textfield;
private JTextField textfield2;
private JTextField textfield3;
private JTextField textfield4;
private JTextField textfield5;
private JButton button;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
public static void main(String[] args) {
new Interface();
}
public Interface() {
JFrame frame = new JFrame("Vormen");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 300);
frame.setLocationRelativeTo(null);
panel = new JPanel(new FlowLayout());
buttonPane = new JPanel();
button = new JButton("cirkel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Use absolute path here:
JLabel label = new JLabel(new ImageIcon("/home/tyrion/circle.png"));
panel.add(label);
panel.revalidate();
panel.repaint();
}
});
buttonPane.add(button);
// buttonPane.add(button2);
// buttonPane.add(button3);
frame.add(buttonPane, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
我是 Java 的新手,我正在尝试制作一个 JFrame,其中有一个 JPanel,一个图像在 JLabel 中。然后通过将 JLabel 添加到 JPanel 它一定可以正常工作吗?但是,这是在 docs.oracle.com...
上完成的方式这是代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Interface {
private JPanel panel;
private JPanel buttonPane;
private JLabel label;
private JLabel label2;
private JTextField textfield;
private JTextField textfield2;
private JTextField textfield3;
private JTextField textfield4;
private JTextField textfield5;
private JButton button;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
public static void main(String[] args) {
new Interface();
}
public Interface() {
JFrame frame = new JFrame("Vormen");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 300);
frame.setLocationRelativeTo(null);
panel = new JPanel();
buttonPane = new JPanel();
button = new JButton("cirkel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JLabel label3 = new JLabel(new ImageIcon("images/cirkel.png"));
panel.add(label3);
panel.revalidate();
panel.repaint();
buttonPane.add(button);
buttonPane.add(button2);
buttonPane.add(button3);
frame.add(buttonPane, BorderLayout.NORTH);
frame.add(panel);
frame.setVisible(true);
}
}
您的应用程序找不到“"images/cirkel.png"。您别无选择:
- 使用绝对路径(就像我在下面修改后的代码中所做的那样)。
- 使用资源(有数百个很好的教程如何做到这一点)。
我使用绝对路径进行快速破解。对于任何严肃的事情,我会选择资源,因为它们与您的应用程序捆绑在一起。
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Interface {
private JPanel panel;
private JPanel buttonPane;
private JLabel label;
private JLabel label2;
private JTextField textfield;
private JTextField textfield2;
private JTextField textfield3;
private JTextField textfield4;
private JTextField textfield5;
private JButton button;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
public static void main(String[] args) {
new Interface();
}
public Interface() {
JFrame frame = new JFrame("Vormen");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 300);
frame.setLocationRelativeTo(null);
panel = new JPanel(new FlowLayout());
buttonPane = new JPanel();
button = new JButton("cirkel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Use absolute path here:
JLabel label = new JLabel(new ImageIcon("/home/tyrion/circle.png"));
panel.add(label);
panel.revalidate();
panel.repaint();
}
});
buttonPane.add(button);
// buttonPane.add(button2);
// buttonPane.add(button3);
frame.add(buttonPane, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}