我有以下JLabel代码:
JLabel someJLabel = new JLabel("<html>first line<br>second line</html>");
someJLabel.setFont(new Font("Arial", Font.PLAIN, 16));
Run Code Online (Sandbox Code Playgroud)
我想做的是能够控制两条线之间的线高/间距。
PS:我也考虑过使用段落而不是换行符,但这是同一回事。而且我不知道您是否可以在不使用CSS的情况下在html标记中执行此操作(您不能在Java Swing中的JLabel中的html代码中使用css)。
我创建了一些标签:
leftLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
leftLabel.setFont(new Font(FONT, Font.PLAIN, 280));
leftLabel.setBorder(BorderFactory.createTitledBorder("aaa"));
leftLabel.setText("0");
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
正如你所看到的那样,上下差距很大.我怎么能减少它?
我不相信多线JLabel的最快解决方案是以下一个(文本来自var,所以我不想手动每个x字符放置HTML代码,它太丑了):
public class JMultilineLabel extends JTextArea{
private static final long serialVersionUID = 1L;
public JMultilineLabel(String text){
super(text);
setEditable(false);
setCursor(null);
setOpaque(false);
setFocusable(false);
setFont(UIManager.getFont("Label.font"));
setWrapStyleWord(true);
setLineWrap(true);
}
}
Run Code Online (Sandbox Code Playgroud)
...确定它不是一个更好的方法来处理这个????
我正在使用 Java 创建一个 Tic-Tac-Toe 游戏。现在,我有了它,因此当您单击一个按钮时,该按钮JButton
将从 中删除JPanel
,JLabel
添加一个包含 X 或 O 图像的图像,并且JPanel
将重新绘制。但是,当我单击该按钮时,图像不会显示,但按钮消失。
创建按钮和JLabel
/ Image
:
package tictactoe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
public class TicTacToe implements ActionListener
{
private JFrame holder = new JFrame();
private GridLayout layout = new GridLayout(3,3);
private FlowLayout panel = new FlowLayout(FlowLayout.CENTER);
private JPanel p11, p12, p13, p21, p22, p23, p31, p32, p33;
private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9;
private …
Run Code Online (Sandbox Code Playgroud) 我试图在Swing中扩展StyledEditorKit,以便能够在编辑器中包含一个JLabel.我能够做到这一点,这是我到目前为止所得到的.在下图中,突出显示的文本按钮是JLabel类型,而文本的其余部分是普通文本.
如您所见,标签呈现的位置略低于普通文本.如何将其顶部与剩余文本的顶部对齐?
以下是用于创建此标签元素的视图的代码:
class ComponentView(Element elem) {
@Override
protected Component createComponent() {
JLabel lbl = new JLabel("");
lbl.setOpaque(true);
lbl.setBackground(Color.red);
try {
int start = getElement().getStartOffset();
int end = getElement().getEndOffset();
String text = getElement().getDocument().getText(start, end - start);
lbl.setText(text);
} catch (BadLocationException e) {}
return lbl;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个java程序,以便在注册时使用网络摄像头捕获员工图像.我可以毫无问题地获得图片,并将其保存在我的C:驱动器中,但在检索图像时,只有部分图像显示在标签上.有没有办法在保存之前重新调整JPEG大小?还是在显示之前?喜欢缩小它没有质量损失....
非常感谢Cheerz!:)!
好的伙计们......这里有: - 我已经按照我使用它们的方式对代码进行了评论.
//This method will capture the image from the interface and save it under the unique employee ID
public String captureImage(int picId){
FrameGrabbingControl ControlFG = (FrameGrabbingControl)
broadcast.getControl("javax.media.control.FrameGrabbingControl");
Buffer buffer = ControlFG.grabFrame();
BufferToImage image = new BufferToImage((VideoFormat)buffer.getFormat());
img = image.createImage(buffer);
path="c:\\employee"+picId+".jpg";
saveJPG(img,path);//method will save the image
return path;
}
public void saveJPG(Image img, String s){***//method will save the image***
System.out.println(s);
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
g2.drawImage(img,null,null);
FileOutputStream out = null;
try{ …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像添加到一个帧但看起来它不起作用.ImageIcon从指定文件创建的图像.图像文件位于java文件存在的seam目录中.
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class image {
public static void main(String args[])
{
TimeFrame frame = new TimeFrame();
}
}
class TimeFrame extends JFrame
{
//Image icon = Toolkit.getDefaultToolkit().getImage("me.jpg");
ImageIcon icon = new ImageIcon("me.jpg");
JLabel label = new JLabel(icon);
public TimeFrame(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("My Frame");
setSize(500,400);
//this.setIconImage(icon);
add(label,BorderLayout.CENTER);
setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud) 我写了一个JLabel的子类,我重写paintComponent(Graphics)
方法来制作渐变背景颜色.
这是JLabel的子类:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
public class DLabel extends JLabel
{
Dimension size = new Dimension(70, 80);
public DLabel()
{
this.setPreferredSize(size);
this.setBorder(BorderFactory.createBevelBorder(TOP, Color.white, Color.black));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
Color color1 = new Color(226, 218, 145);
Color color2 = color1.brighter();
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(
0, 0, color1, 0, h, color2);
g2d.setPaint(gp); …
Run Code Online (Sandbox Code Playgroud) 这个特定的GIF动画播放速度太快,比正常速度快100倍.有没有解决这个问题?或者我应该进一步减慢"GIF的正常速度"?
public class Test {
private static final String url = "http://i.stack.imgur.com/AnrWw.gif";
private void display() throws MalformedURLException {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JLabel(new ImageIcon(new URL(url))));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
new Test().display();
} catch (MalformedURLException ex) {
ex.printStackTrace(System.err);
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud) 有没有更好的方法可以将容器中的JLabel的Icon作为BufferedImage获得多个转换?
Component[] components = container.getComponents();
BufferedImage image = ((BufferedImage) ((ImageIcon) ((JLabel) components[i]).getIcon()).getImage());
Run Code Online (Sandbox Code Playgroud)