- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以在 Swing 中制作类似于 StackOverflow 上的标签输入系统的东西(可能使用 JTextField
)。
最佳答案
您可以重新定义自己的类来扩展 JTextField
类并创建您想要的样式。
编辑:
我创建了一个你想要的小例子。这只是一个草案,可以改进,但您现在有了一个起点。
public class MainPanel extends JPanel{
public MainPanel() {
super(new BorderLayout());
final JPanel p = new JPanel(new GridLayout(5,1,5,5));
final JTextPane tp = new JTextPane();
final StyledDocument doc = tp.getStyledDocument();
final SimpleAttributeSet attr = new SimpleAttributeSet();
JTextField textField01 = new JTextField(20) {
//Unleash Your Creativity with Swing and the Java 2D API!
//http://java.sun.com/products/jfc/tsc/articles/swing2d/index.html
@Override protected void paintComponent(Graphics g) {
if(!isOpaque()) {
int w = getWidth();
int h = getHeight();
Graphics2D g2 = (Graphics2D)g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(UIManager.getColor("TextField.background"));
g2.fillRoundRect(0, 0, w-1, h-1, h, h);
g2.setColor(Color.GRAY);
g2.drawRoundRect(0, 0, w-1, h-1, h, h);
g2.dispose();
}
super.paintComponent(g);
}
};
textField01.setOpaque(false);
textField01.setBackground(new Color(0,0,0,0));
textField01.setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));
textField01.setText("Test");
textField01.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
// TODO: Do something for the keyTyped event
}
public void keyPressed(KeyEvent e) {
// TODO: Do something for the keyPressed event
if(e.getKeyCode() == KeyEvent.VK_ENTER){
JTextField textField = (JTextField) e.getSource();
String text = textField.getText();
textField.setText("");
JLabel label = new JLabel(text);
label.setOpaque(true);
label.setBackground(Color.lightGray);
label.setBorder(BorderFactory.createLineBorder(Color.black,1));
tp.setCaretPosition(tp.getDocument().getLength());
tp.insertComponent(label);
try {
doc.insertString(doc.getLength(), " ", attr);
}
catch (BadLocationException ex){
ex.printStackTrace();
}
}
}
});
p.add(textField01);
p.add(tp);
add(p);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
setPreferredSize(new Dimension(320, 200));
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e) {
e.printStackTrace();
}
JFrame frame = new JFrame("Tags editor");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class RoundedCornerBorder extends AbstractBorder {
@Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D)g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int r = height-1;
RoundRectangle2D round = new RoundRectangle2D.Float(x, y, width-1, height-1, r, r);
Container parent = c.getParent();
if(parent!=null) {
g2.setColor(parent.getBackground());
Area corner = new Area(new Rectangle2D.Float(x, y, width, height));
corner.subtract(new Area(round));
g2.fill(corner);
}
g2.setColor(Color.GRAY);
g2.draw(round);
g2.dispose();
}
@Override public Insets getBorderInsets(Component c) {
return new Insets(4, 8, 4, 8);
}
@Override public Insets getBorderInsets(Component c, Insets insets) {
insets.left = insets.right = 8;
insets.top = insets.bottom = 4;
return insets;
}
}
关于java - JTextField "Bubble"文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037698/
我正在使用带有气泡的 D3 和 DataMaps。我想在有人点击气泡时添加自定义操作。这些操作需要传递气泡的属性,例如气泡的名称。 如何将气泡的名称传递到该气泡的点击事件中? map.svg.sele
我有一个 d3 脚本,其中包含以下格式的数据: var data = [{name: "A", rank: 0, student_percentile: 100.0, adm
冒泡排序基本介绍 冒泡排序(Bubble Sorting)的基本思想是通过对待排序序列从前向后(从下表较小的元素开始),以此比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后部,就像水底下
冒泡排序基本介绍 冒泡排序(Bubble Sorting)的基本思想是通过对待排序序列从前向后(从下表较小的元素开始),以此比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后部,就像水底下
我没有阅读太多关于它的内容,但是下面链接中的作者建议我不要使用“冒泡”来集中 VBA 中的错误处理。 Excel Programming Weekend Crash Course via Google
这是我的冒泡排序代码,但我很困惑为什么输出仅显示 125。 int secondArray[] = {0, 1, 5, 2}; int num; for (int i = 1; i secondAr
我不确定这是一个传播问题还是一个设计缺陷,我读到过传播问题都是泡沫,但它就在这里。我有一个表格编辑网格。 每个单元格包含两个主要 block :编辑 div(包含用于编辑显示值的表单)和查看 div(
这个问题在这里已经有了答案: jquery stop child triggering parent event (7 个答案) 关闭 8 年前。 我不确定这是否真的冒泡,我会解释。 我有这个:
我想知道是否可以在 Swing 中制作类似于 StackOverflow 上的标签输入系统的东西(可能使用 JTextField)。 最佳答案 您可以重新定义自己的类来扩展 JTextField 类并
public static void sortByNumber(Course[] list) { Course temp = new Course(); boolean fixed =
在我的事件处理函数中,我需要检查某些字段是否是唯一的。为了实现这一点,我在后端使用 ajax 调用函数。 使用回调从该函数发回数据。此时我有事件处理程序: self.searchKeyboardCmd
我想设置 OKFN 制作的泡泡树。 https://github.com/okfn/bubbletree/wiki/Bubble-Tree-Documentation 现在我想在这里输入一些数据。我想
我想创建气泡,就像 iPhone 上的邮件应用程序一样。但是大量气泡(> 10)会大大减慢 View 的滚动速度。 关于我的实现的几句话:我创建自定义 View 并在其上添加“气泡”。以下是我创建每个
我目前正在开发一个 Web 应用程序,并尝试使用 QuillJS 作为所见即所得编辑器。我正在尝试使用“Bubble”主题,因为它与我的网络应用程序的其余部分非常适合,但是当工具提示应该出现时,它并没
main方法创建一个随机整数数组,然后调用升序和降序方法对数组进行排序。似乎当我调用升序和降序方法时,它会改变原始数组的值。打印时收到的输出是三个数组,全部按降序排序。 public static v
对于下面的 facebook 点赞按钮,按钮右侧有一个# of likes 气泡(?)(见下文 - 气泡上带有“3.5k”的文本) 问题是——它是用 css 绘制的吗?如何创建? 最佳答案 fiddl
如果字符串很长,则必须转到下一行。我该怎么做? Demo HTML Body 01-10 03:29:
给定冒泡排序算法: Algorithm BubbleSort(A[0...n]): for i <- 0 to n-2 do for j <- 0 to n-2-i do if
这个问题在这里已经有了答案: Is it possible for the child of a div set to pointer-events: none to have pointer ev
我正在尝试获取通知以在 MFC 应用程序中弹出类似这些气泡的内容: (来源:humanized.com) 我目前正在用 C# 制作一个界面模型,以向一些利益相关者展示,所以最好也有它。 它不一定非得是
我是一名优秀的程序员,十分优秀!