我写了一个扑克模拟器/赔率计算器.在GUI上,有一些JComboBox用户可以从中选择卡片.
现在,我有这些卡的图像,我也有Base64格式的图像.我试图通过3种不同的方式显示它们.我为每个人编写了一个小程序用于演示目的.
以下是我尝试过的3种方法:
1).将图像存储在JAR文件中:
非常直截了当.图像进入JAR,Java代码从那里读取它们.之后,它创建一个JComboBox包含所有这些并显示它:
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.ImageIcon;
public class ImagesFromJAR
{
private JFrame mainframe;
public ImagesFromJAR ()
{
ImageIcon[] cardslist = new ImageIcon[52];
for (int i = 0; i < 52; ++i)
{
cardslist[i] = new ImageIcon (getClass (). getResource ((this.getImagePath (i))));
}
JComboBox cardsbox = new JComboBox (cardslist);
cardsbox.setSelectedIndex (0);
cardsbox.setEditable (false);
this.mainframe = new JFrame ();
this.mainframe.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
this.mainframe.setSize (150, 150);
this.mainframe.setLayout (null);
cardsbox.setBounds (20, 20, 55, 45); …Run Code Online (Sandbox Code Playgroud) 我一直在寻找解决方案,并阅读一些与此问题相关的类似帖子但其中没有一个对我有用.
我正在尝试在JButton上显示图像"b.png",当我滚动按钮时图标会发生变化.
package GUI_JButton;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Gui extends JFrame {
private JButton reg;
private JButton custom;
public Gui() {
super("Title goes here");
setLayout(new FlowLayout());
reg = new JButton("reg button"); // create reg button
add(reg); // add reg button to JFrame
// initialize images
Icon b = new ImageIcon(getClass().getResource("images/imageA.png"));
Icon x = new ImageIcon(getClass().getResource("images/imageB.png"));
custom = new JButton("custom button", b); // create custom …Run Code Online (Sandbox Code Playgroud) public class GUI
{
JFrame frame;
JPanel squares[][];
/* Constructor credited to stackoverflow user ranzy
http://stackoverflow.com/questions/2535417/chess-board-in-java */
public GUI()
{
frame = new JFrame("Chess");
squares = new JPanel[8][8];
frame.setSize(500, 500);
frame.setLayout(new GridLayout(8, 8));
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.white);
} else {
squares[i][j].setBackground(Color.orange);
}
frame.add(squares[i][j]);
}
}
ImageIcon pawnW = …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个 Java 桌面应用程序。
我想在 上设置图像JLabel。
我正在使用 NetBeans。
从我的项目文件夹中,我的目录结构是:
F:/>MARKET
|
|___src
|
|___lib
|
|___src
| |
| |__defaultpackage
| |
| demo.java
|__images
|
|
Logo1.png
Run Code Online (Sandbox Code Playgroud)
我使用了以下代码:
jLabel4 = new JLabel(new ImageIcon("images/Logo1.png"));
Run Code Online (Sandbox Code Playgroud)
它不起作用,我怎样才能得到我的输出?
我正在用 Java 构建一个桌面应用程序。我想获取相对于 JSrollPane 中的图像的鼠标单击的鼠标坐标。JScrollPane screenScroll 包含在带有 BorderLayout 的 JPanel 中。
final JLabel screenLabel = new JLabel(new ImageIcon(image));
JScrollPane screenScroll = new JScrollPane(screenLabel);
screenScroll.getViewport().setBackground(Color.white);
screenLabel.addMouseListener(new MouseAdapter() {
@Override //I override only one method for presentation
public void mousePressed(MouseEvent e) {
System.out.println("Y'all clicked at: "+e.getX() + ", " + e.getY()+" in the image.");
}
});
Run Code Online (Sandbox Code Playgroud)
所以这里的问题是:JPanel 比图像大,JScrollPane 占据了 JPanel 的 100%(看起来不错,我很高兴)但是 mousePressed 事件给了我相对于 JScrollPane/JPanel 的坐标,而不是图像,所以 x 坐标是偏移的(即使 mouseListener 被添加到包含 ImageIcon 的 JLabel)。
希望我解释清楚。如何修改上面的代码以获取相对于图像的坐标?
当我将图标添加到 时JMenuItem,它会放大到图标的大小。看看这里的区别:

我可以以某种方式强制它缩小到原来的大小吗?如果没有,是否有默认的图标大小JMenuItem(也就是说,当图标完全适合 Test1、2、3 的图标槽时,图标的大小是多少)?
// 我的代码调用要放置在 JPanel 上的目录中的 n 个图像
public void imageAdder(int n, String name){
BufferedImage myPic = null;
for (int i = 0; i <= n; i++){
try {
myPic = ImageIO.read(new File("Images/" + name + i + ".jpg"));
} catch (Exception e){
System.out.println("no file man cmon");
}
JLabel picLabel = new JLabel(new ImageIcon(myPic));
// picLabel.setBounds(mouseX, mouseY, 100, 50);
// picLabel.addMouseMotionListener(this);
// picLabel.addMouseListener(this);
canvas.add(picLabel);
}}
Run Code Online (Sandbox Code Playgroud)
我阅读了类 DragSource 以及如何有一种方法可以拖动图像类型的东西,但我不确定这是否适用于我的代码。如果我想用鼠标自由拖动图像怎么办?
在Eclipse中,当我运行代码时,这有效:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("test viewing images");
frame.setSize(600,300);
frame.setLocationRelativeTo(null); // centered on monitor
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/**
* Menu Bar stuff
*/
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;
// MENU BAR
menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
menuBar.setVisible(true);
// MENU 1
menu = new JMenu("File");
menuBar.add(menu);
// MENU 1 ITEM
ImageIcon icon = new ImageIcon("src/Action-exit-icon.png");
menuItem = new JMenuItem("Exit Program", icon);
menu.add(menuItem); …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) 我正在尝试在工具栏中添加一个图标,但最好放在哪个位置?我的桌面或应该在项目文件中创建一个新文件或添加所有图片,因为它没有显示,这是我的代码:
JToolBar toolBar = new JToolBar();
String[] iconFiles = {"pen-icon","",""};
String[] buttonLabels = {"New","Open","Save"};
icon = new ImageIcon[iconFiles.length];
Obutton = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; ++i) {
icon[i] = new ImageIcon(iconFiles[i]);
Obutton[i] = new JButton(icon[i]);
Obutton[i].setToolTipText(buttonLabels[i]);
if (i == 3)
toolBar.addSeparator();
toolBar.add(Obutton[i]);
}
Run Code Online (Sandbox Code Playgroud)