小编Dav*_*amp的帖子

图像不会出现在JLabel中

我使用Netbeans的GUI Builder为我的应用程序创建了GUI.我试图显示一个JFrame包含JLabel图像的图像,我无法Image显示.

我生成的代码:

private void initComponents() {
        //...
        jLabel1 = new JLabel(new ImageIcon(myPicture));
}
Run Code Online (Sandbox Code Playgroud)

我的班级代码:

public class GUIWindow extends javax.swing.JFrame {

    BufferedImage myPicture;

    /** Creates new form GUIWindow */
    public GUIWindow() throws IOException {
        myPicture = ImageIO.read(new File("images/logo.png"));
        initComponents();
        this.add(jLabel1);

    }
}
Run Code Online (Sandbox Code Playgroud)

但我仍然没有看到图像...... (图像文件的路径很好)它的样子:

my-project :
  /build
  /dist
  /images/logo.png
  /nbproject
  /src (here I have all my source files)
  /build.xml
  /manifest.mf
Run Code Online (Sandbox Code Playgroud)

java user-interface swing image jframe

2
推荐指数
1
解决办法
2318
查看次数

旋转矩形并在sin波中移动它 - 使用graphics2D帮助

嗨!

我使用以前的Stackoverflow帖子有下面的代码.

我想将矩形旋转一定角度,使其在sin波中移动.

此代码也会旋转整个sin波.

我明白为什么会这样,但我不知道如何实现我的意图.

请帮忙!!!

非常感谢您抽出宝贵时间.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Withrotation {

    public static int i = 1;
    public static Ticker t;
    public static Repainter r;
    public static int newx, newy;

    public static void main(String[] args) {
        final JFrame frame = new JFrame("Wavy!");
        final WavyPanel wp = new WavyPanel();
        frame.getContentPane().add(wp, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        t = new Ticker(wp);
        r = new Repainter(wp);
        frame.pack(); …
Run Code Online (Sandbox Code Playgroud)

java swing rotatetransform jpanel graphics2d

2
推荐指数
1
解决办法
890
查看次数

JLabel中的可单击单词

我想在Jlabel文本中包含可单击的单词,我想为每个单词注册一个MouseListener或获取单击的单词(否则).下图显示了我想要的内容.这可能吗 ?!

在此输入图像描述

java swing jlabel click mouselistener

2
推荐指数
1
解决办法
762
查看次数

JButton中不透明像素的事件检测

我有一个类扩展JButton,我试图应用.png图像.图像形状不规则,并被透明像素包围.我已经覆盖了paintComponent()方法,在JButton我的缓冲图像应用到按钮.现在,图像是唯一被绘制的东西,这就是我想要的.

但是,按钮仍然会检测周围矩形中的事件.有没有办法将检测限制在仅包含不透明像素的区域(或者更确切地说检测透明像素上的事件)?

按钮类的代码如下.

public class DrawButton extends JButton{

    private BufferedImage bi;

    public DrawButton(BufferedImage bi){
        setPreferredSize(new Dimension(bi.getWidth(), bi.getHeight()));
        this.bi = bi;
    }

    @Override
    protected void paintComponent(Graphics g){
        g.drawImage(bi, 0, 0, null);
        g.dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing jbutton

2
推荐指数
1
解决办法
365
查看次数

jTextField只接受字母和空格

如果用户输入其他字符,我希望用户只输入字母或空白区域,我想用jOptionPane给出消息我已经搜索过,我试过下面的代码

if (!(Pattern.matches("^[a-zA-Z]+$", answerField1.getText())))
        JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
Run Code Online (Sandbox Code Playgroud)

但现在无论我输入它都会给出错误

现在我改变了代码

Pattern letterPattern = Pattern.compile("^[a-zA-Z]+$");

if (!(letterPattern.matcher(answerField1.getText()).matches()))
      {
    JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
}
Run Code Online (Sandbox Code Playgroud)

现在它只给消息第一次用户输入号码.我怎么能解决这个问题

java swing filter jtextfield

2
推荐指数
1
解决办法
2万
查看次数

在Swing中的表单验证期间绘制警告符号

我已经开发了一个swing表单来验证条目,因为焦点从JTextComponent中丢失,如果条目正确,则背景被涂成绿色,否则它被涂成红色.

这是代码: -

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.text.JTextComponent;



public class Form extends JFrame implements FocusListener{
JTextField fname,lname,phone,email,address;
BufferedImage img;
public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable(){public void run(){new Form();}});
}

public Form()
{
super("Form with Validation Capability");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,300);
setLayout(new GridLayout(5,3));

try {
    img=ImageIO.read(new File("src/warning.png"));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

add(new …
Run Code Online (Sandbox Code Playgroud)

java swing background jtextfield

2
推荐指数
1
解决办法
3109
查看次数

系统托盘displayMessage()未显示

所以我想要的是程序运行时(它是系统托盘),这些小通知问题之一显示在屏幕右下方。我试过了。

trayIcon = new TrayIcon(image, "Title", popup);
trayIcon.setImageAutoSize(true);
trayIcon.displayMessage("Title", "MESSAGE HERE", TrayIcon.MessageType.ERROR) //THIS IS THE LINE THAT SHOULD SHOW THE MESSAGE
Run Code Online (Sandbox Code Playgroud)

程序运行时应该在哪里运行,并且参数正确的方法正确吗?

java swing system-tray

2
推荐指数
1
解决办法
2391
查看次数

UIStackView 动态地添加 2 个彼此相邻的标签,没有额外的间距

我是 iOS 开发的新手,我对如何实现这一点有点困惑。

UILabel添加了2个UIStackView像这样的:

let horizontalStackView1 = UIStackView(arrangedSubviews: [self.label1, self.label2])
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,它看起来像这样:

在此处输入图片说明

但是,我喜欢标签彼此相邻,中间没有间距,如下所示: 在此处输入图片说明

香港专业教育学院尝试设置horizontalStackView1.distributionhorizontalStackView1.alignment等等,没有运气。

我如何实现这一目标?

提前致谢!

更新:

代码看起来像这样(顺便说一下,它是表格的一个单元格):

class ItemTableViewCell: UITableViewCell
{
    ...
    let stateLabel = UILabel()
    let effectiveDateLabel = UILabel()
    ...

    var typeImage: UIImage?
    {
        ...
    }

    var summary: String?
    {
        ...
    }

    var effectiveDate: Date?
    {
        ...
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?)
    {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.accessoryType = .disclosureIndicator
        ...
        let horizontalStackView1 = UIStackView(arrangedSubviews: [self.stateLabel, self.effectiveDateLabel])
        let horizontalStackView2 = …
Run Code Online (Sandbox Code Playgroud)

uilabel ios swift uistackview

2
推荐指数
1
解决办法
2426
查看次数

Java SwingUtilities.invokeLater()使用拖放进行计时

Java Swing SwingUtilities.invokeLater()允许您将一个线程入队,以便在处理完最后一个AWT事件(用户手势)后运行.

invokeLater()保证等到拖放动作完成后?

java swing drag-and-drop swingutilities

1
推荐指数
1
解决办法
258
查看次数

来自不同类的油漆

我正在尝试用Java(学校项目)制作游戏,我有以下设置:

一个主要的类,用JFrame扩展,一个'Game'类,用JPanel扩展.

现在从这个主类中,我调用了一个类'Player'和一个类'Map'.类'Map'存在两个子类'Blocks'和'Bombs'.

但我想知道..我如何让所有这些类的绘制方法绘制到相同的JPanel(类Game)?

我给每个类的方法'public void paint(Graphics g)'并做了绘画..但是当我运行程序时,只有"Game"类的绘画出现,而不是来自子类的绘画.

我该如何实现?

例如,我将代码缩减为:

主要课程:

    BomberGame game = new BomberGame();
        add(game);
        setSize(400, 400);
        setTitle("Bomber");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.show();

    }

    public static void main(String[] args) {
        BomberB1 main = new BomberB1();
    }
}
Run Code Online (Sandbox Code Playgroud)

游戏类:

    package bomberb1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


import java.util.ArrayList;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class BomberGame extends JPanel {
    public BomberGame() {;
        BomberMap map = new …
Run Code Online (Sandbox Code Playgroud)

java graphics swing

1
推荐指数
1
解决办法
5156
查看次数