- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 JPanel,在提供的代码中名为 infoPanel,我希望能够在它前面精确地放置一个带有 JLabel 的 JTextField。我尝试向其中添加 JLabel,但无法将其放置在我想要的位置。我想把它放在比提供的代码低大约 20 个像素的位置,并且在它前面我想添加 JTextField。我还想让 JTextField 只读。
如何精确放置 JTextField 和 JLabel?
这方面的最佳实践是什么?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.util.*;
import java.util.List;
@SuppressWarnings("serial")
public class DrawPanelMain extends JPanel {
private static final int PREF_W = 1200;
private static final int PREF_H = 700;
private List<Point> POINT_LIST = Arrays.asList(new Point[] {
new Point(40, 40),
new Point(40, 100),
new Point(40, 160),
new Point(40, 220),
new Point(40, 280),
new Point(40, 340),
new Point(40, 400),
new Point(40, 460),
new Point(40, 520),
new Point(40, 580),
new Point(100, 100),
new Point(100, 160),
new Point(100, 220),
new Point(100, 280),
new Point(100, 340),
new Point(100, 400),
new Point(100, 460),
new Point(100, 520),
new Point(100, 580),
new Point(160, 160),
new Point(160, 220),
new Point(160, 280),
new Point(160, 340),
new Point(160, 400),
new Point(160, 460),
new Point(160, 520),
new Point(160, 580),
new Point(220, 220),
new Point(220, 280),
new Point(220, 340),
new Point(220, 400),
new Point(220, 460),
new Point(220, 520),
new Point(220, 580),
new Point(280, 280),
new Point(280, 340),
new Point(280, 400),
new Point(280, 460),
new Point(280, 520),
new Point(280, 580),
new Point(340, 340),
new Point(340, 400),
new Point(340, 460),
new Point(340, 520),
new Point(340, 580),
new Point(400, 400),
new Point(400, 460),
new Point(400, 520),
new Point(400, 580),
new Point(460, 460),
new Point(460, 520),
new Point(460, 580),
new Point(520, 520),
new Point(520, 580),
new Point(580, 580)
});
private JTabbedPane tabbedPane = new JTabbedPane();
private int tabIndex = 0;
public DrawPanelMain() {
JPanel btnPanel = new JPanel();
JPanel infoPanel = new JPanel();
btnPanel.add(new JButton(new AddSwitchAction("Add Switch Panel")));
btnPanel.add(new JButton(new PushConfigAction("Push Config")));
btnPanel.add(new JButton(new ActivateAllAction("Activate All"))); //Button I want to work with
infoPanel.add(new JTextField(20));
setLayout(new BorderLayout());
add(tabbedPane, BorderLayout.CENTER);
add(btnPanel, BorderLayout.PAGE_END);
add(infoPanel, BorderLayout.EAST);
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}
private class AddSwitchAction extends AbstractAction {
public AddSwitchAction(String name) {
super(name);
int mnemonic = (int) name.charAt(0);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
tabIndex++;
String title = "Switch " + tabIndex;
DrawPanel2 tabComponent = new DrawPanel2(POINT_LIST);
tabbedPane.add(title, tabComponent);
}
}
private class PushConfigAction extends AbstractAction {
public PushConfigAction(String name) {
super(name);
int mnemonic = (int) name.charAt(0);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
/*Add code sending the configuration to the switch panel*/
JOptionPane.showMessageDialog(DrawPanelMain.this, "Configuration Pushed to Panel");
}
}
private class ActivateAllAction extends AbstractAction {
public ActivateAllAction(String name) {
super(name);
int mnemonic = (int) name.charAt(1);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
Component comp = tabbedPane.getSelectedComponent();
if (comp instanceof DrawPanel2) {
DrawPanel2 drawPanel = (DrawPanel2) comp;
drawPanel.activateAll();
}
}
}
private static void createAndShowGui() {
DrawPanelMain mainPanel = new DrawPanelMain();
final double version = 0.1;
JFrame frame = new JFrame("RF Connection Panel " + version);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
@SuppressWarnings("serial")
class DrawPanel2 extends JPanel {
private static final int OVAL_WIDTH = 40;
private static final Color INACTIVE_COLOR = Color.RED;
private static final Color ACTIVE_COLOR = Color.green;
private List<Point> points;
private List<Ellipse2D> ellipses = new ArrayList<>();
private Map<Ellipse2D, Color> ellipseColorMap = new HashMap<>();
public DrawPanel2(List<Point> points) {
this.points = points;
for (Point p : points) {
int x = p.x - OVAL_WIDTH / 2;
int y = p.y - OVAL_WIDTH / 2;
int w = OVAL_WIDTH;
int h = OVAL_WIDTH;
Ellipse2D ellipse = new Ellipse2D.Double(x, y, w, h);
ellipses.add(ellipse);
ellipseColorMap.put(ellipse, INACTIVE_COLOR);
}
MyMouseAdapter mListener = new MyMouseAdapter();
addMouseListener(mListener);
addMouseMotionListener(mListener);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for (Ellipse2D ellipse : ellipses) {
g2.setColor(ellipseColorMap.get(ellipse));
g2.fill(ellipse);
}
}
private class MyMouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
for (Ellipse2D ellipse : ellipses) {
if (ellipse.contains(e.getPoint())) {
Color c = ellipseColorMap.get(ellipse);
c = (c == INACTIVE_COLOR) ? ACTIVE_COLOR : INACTIVE_COLOR;
ellipseColorMap.put(ellipse, c);
}
}
repaint();
}
}
public void activateAll() {
for (Ellipse2D ellipse : ellipses) {
ellipseColorMap.put(ellipse, ACTIVE_COLOR);
}
repaint();
}
}
最佳答案
How can I precisely place JTextField and JLabels?
不要专注于此,专注于让 UI 的流程对用户来说有意义且简单。
What is the best practice for this?
使用一个或多个合适的布局管理器,在布局管理器支持它们的地方使用 Insets
和/或在它们不支持的地方使用 Border
例如……
JPanel fields = new JPanel();
fields.add(new JLabel("Hello: "));
fields.add(new JTextField(20));
fields.setBorder(new EmptyBorder(20, 2, 0, 2));
infoPanel.add(fields);
参见 Laying Out Components Within a Container和 How to Use Borders了解更多详情
关于java - JTextField 剪裁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443615/
在this question的回答中, this fiddle进行“正常”裁剪,即灰色区域矩形外的图像将被裁剪,只保留灰色矩形区域内的图像。 “正常”裁剪的关键代码使用函数“clipTo”: obje
我一直在使用 JPanel,在提供的代码中名为 infoPanel,我希望能够在它前面精确地放置一个带有 JLabel 的 JTextField。我尝试向其中添加 JLabel,但无法将其放置在我想要
这可能没有我想象的那么难,但是我如何选择图像的一部分呢?考虑以下示例: 灰色区域是PNG或JPG格式的图片,现在我想从中选择红色的80x80像素区域。红色区域应显示,其余区域不显示。我尝试了很多方法:
http://www.youtube.com/watch?v=gZNdfVwkttM - 如果您看不到图片,您可以看到此视频中描述的所有问题。 下面所有图像中的所有墙壁都具有半透明的 PNG 纹理。每
我已经阅读了几个小时关于剪辑的文章,但我似乎没有找到解决我的问题的方法。 这是我的场景: 在 OpenGL ES 环境(IOS、Android)中,我有一个由可绘制对象组成的 2D 场景图,形成一棵树
问题是当我使用像 Helvetica Oblique 这样大小大于 13 的斜体字体时,UIButton 剪辑标题尾部(最后大约 1-2 个像素)。有人知道这个问题的解决方案吗? 最佳答案 子类 UI
想象一下,有一组光线围绕着一个圆圈 - 就像太阳一样。我想做的是遮盖光线,让光线看起来像是从太阳“升起”。 在 Flash 中,我可以通过执行类似以下步骤的操作为此创建一个不错的效果:- 将光线分成
我试图在背景图片上添加 CSS3 webkit 模糊,然后对其进行剪辑(通过将其放入较小的父级并设置 overflow: hidden ) 不幸的是,当我这样做时,我的模糊效果只发生在剪辑的内容上,所
如何让 div #1(页面标题)“切入”div #2(mainwrap)并查看背景图像? 例子: CSS: body {background-image: url("/background
我有一个相当数学的问题需要解决: 任务是用最少的废料从固定长度的管中切割出预定数量的管。 假设我想从标准长度为 6m 的 pipe 中切割出 10 根 1m 的 pipe 和 20 根 2.5m 的
我有一个巨大的image嵌入在 SVG 中的 map ,它比浏览器窗口大得多并位于屏幕中心。 有两条路。一条路径勾勒出一座建筑。另一条路径勾勒出 map 上的一个子区域。
我试图理解 E. L Foster 和 J. R. Overfelt [1] 的论文“Clipping of Arbitrary Polygons with Degeneracies”,该论文声称通过
我正在从一组点计算 voronoi 图,如下所示: from scipy.spatial import Voronoi import numpy as np np.random.seed(0) poi
我整天都在尝试解决这个问题,我将 mainWindow.xib 升级到了 4 英寸 iPhone 5 版本,并且我所有的 ActionSheets 在 4 英寸模拟器上都表现正常。但是,如果我取消在
我做了一个这样的面板框: HTML Hot Article Article Article Article
有什么方法可以防止 clip-path 剪掉它的 child 吗?例如,考虑以下代码: .el { width: 300px; height: 300px; clip-path: poly
我的应用程序使用 UINavigationController,但我没有显示工具栏,因为我的所有导航都由游戏内控件控制。 我没有标签栏,因为我没有使用 TabBarController。 我的游戏应用
场景: 在我的场景中,我实现了一个顶点着色器,它在相机位置的 xz 轴上定位一个平面网格。因此,如果相机移动,平面网格也会随之移动。这导致视觉效果,即在移动相机时,平面网格似乎保持固定在原地。这似乎工
我想替换列表中的大纲。因此我定义了一个上限和下限。现在,upper_bound 和 lower_bound 之下的每个值都替换为绑定(bind)值。我的方法是使用 numpy 数组分两步执行此操作。
我想在我的 Fabric-powered Canvas 中设置一个全局 clipTo,这将影响所有用户添加的图层。我想要一个不受此剪辑蒙版影响的背景图像和叠加图像。 例子: 这是这张照片中发生的事情:
我是一名优秀的程序员,十分优秀!