Используйте несколько цветов фона в метках - PullRequest
0 голосов
/ 06 марта 2012

Я строю JFrame и хочу, чтобы на нем было 3 JLabel экземпляра с тремя разными цветами.

  1. БЕЛЫЙ
  2. КРАСНЫЙ
  3. БЕЛЫЙ

Это мой код:

package View;

import java.awt.*;
import javax.swing.*;

public class Home extends JFrame {

    private JLabel label, label1;
    private JPanel panel;
    private Container window = getContentPane();

    public Home (){
        initGUI();
    }

    public void initGUI(){
        setLayout(null);
        setTitle("");
        setPreferredSize(new Dimension(800,600));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        label = new JLabel();       
        label.setBounds(0, 0, 266, 800);
        label.setBackground(Color.WHITE);
        label.setOpaque(true);
        this.add(label);

        panel = new JPanel();

        pack();
    }
}

Но когда ядобавьте вторую метку с красным цветом, который должен стоять рядом с белым цветом фона, белый фон исчезнет

1 Ответ

0 голосов
/ 29 марта 2012

использовать html как текстовую метку как

public class test {

public static void main(String[] args) {
    String initialText = "<html>\n" +
    "Color and font test:\n" +
    "<table>"+
    "<ul>\n" +
    "<tr>"+
    "<td bgcolor=\"#C0C0C0\">"+
    "<li><font color=red>red</font>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#FF0000\">"+
    "<li><font color=blue>blue</font>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#800000\">"+
    "<li><font color=green>green</font>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#FFFF00\">"+
    "<li><font size=-2>small</font>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#808000\">"+
    "<li><font size=+2>large</font>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#00FFFF\">"+
    "<li><i>italic</i>\n" +
    "</td>"+
    "</tr>"+
    "<tr>"+
    "<td bgcolor=\"#008080\">"+
    "<li><b>bold</b>\n" +
    "</td>"+
    "</tr>"+
    "</ul>\n"+
    "</table>"
    ;
    JFrame f = new JFrame("This is a test");
    f.setSize(400, 150);
    Container content = f.getContentPane();
    content.setBackground(Color.white);
    content.setLayout(new FlowLayout()); 
    content.add(new JLabel(initialText));


    f.setVisible(true);
  }

}

...