Tag: 用户界面

显示软键盘时向上移动布局?

我在RelativeView中有几个元素,并且在popup软键盘时,元素被软键盘隐藏起来。 我希望他们向上移动,以便如果有足够的屏幕空间,他们会显示在键盘上方,或者使键盘上方的部分可滚动,以便用户仍然可以看到元素。 任何想法如何解决这个问题?

如何以编程方式获取Android导航栏的高度和宽度?

Android的屏幕底部的黑色导航栏不容易移动。 自3.0以来,它一直是Android的一部分,作为硬件button的替代品。 这是一张图片: 我怎样才能得到这个UI元素的宽度和高度的像素的大小?

Java swing JComponent“大小”

我正在做一个项目,我需要一些自定义的挥杆组件。 到目前为止,我已经做了一个新的button与一系列的图像(Java的金属外观根本不适合我的用户界面)。 我实现了这个新的组件的MouseListener ,这是我的问题出现的地方。 我的小部件更改hover图像,单击等,除了我的MouseListener拿起鼠标进入整个GridLayout容器,而不是进入图像。 所以我有一个大约200 * 100的图像和周围的容器大约400 * 200和mouseEntered方法是当它进入GridLayout部分(甚至它的空白部分),而不是在图像上触发。 我怎么能这样做,只有当我hover在图像上才被解雇? 我试图设置大小和范围和其他属性无济于事。 编辑:这是我的问题的演示。 正如你所看到的(颜色非常相似),右下angular的button只要inputGridlLayout部分GridlLayout 。 我只想要它突出显示当我超过图像实际,而不是GridLayout部分。 我不会添加MouseListener方法,因为它们只涉及切换显示的图像。 public customWidget() { this.setLayout(new FlowLayout()); try { imageDef=ImageIO.read(new File("/home/x101/Desktop/buttonDef.png")); imageClick=ImageIO.read(new File("/home/x101/Desktop/buttonClick.png")); imageHover=ImageIO.read(new File("/home/x101/Desktop/buttonHover.png")); current=imageDef; } catch (IOException e) { e.printStackTrace(); } this.addMouseListener(this); } protected void paintComponent(Graphics g) { super.paintComponents(g); g.drawImage(current, 0, 0, current.getWidth(), current.getHeight(), null); } 编辑:添加代码部分

构build不在事件派发线程上的Swing / AWT小部件是否安全?

我已经将物质的外观和感觉整合到了我的应用程序中,并遇到了有关它的内部EDT(Event Dispatch Thread)检查例程的几个问题。 物质绝对拒绝在EDT之外构buildUI类。 我已经做了很多Swing / AWT,并且我知道关于EDT的大部分规则。 我使用SwingWorker,SwingUtilties.invokeLater来修改组件。 我总是认为这些组件可以在EDT之外构build ,但是必须在EDT上实现和操纵 。 换句话说,您可以在后台构造和设置默认值,但是对pack / setVisible的调用必须是EDT以及任何后续调用组件的调用。 我问的原因是,我有一个特别“结实”的窗口来构build,涉及到许多小部件,状态和资源(很多图标)。 之前,我在SwingWorker的背景方法上构build了窗口,并使窗口在done方法中可见。 从来没有一个单一的问题。 切换到物质后,内部的EDT检查咬我。 我已经能够重构代码来解决这个问题。 我可以在EDT上构build这个不好的解决scheme,因为整个应用程序都会阻塞。 我还可以重构更多的东西,并尽我所能加载EDT以外的所有额外资源。 包装它… 构build Swing / AWT小部件不是在事件派发线程安全吗?

为什么大多数UI框架是单线程的?

例如,Java Swing和Android UI都使用单线程模型,其中单个UI线程负责更新所有UI。 是什么让框架devise师select了另一个线程模型呢? multithreadingUI模型可能会给你更多的性能,尽pipe代价是更复杂吗? 我意识到后者是一个大问题,因为线程相关的错误是讨厌的,但我想知道除了简单之外,是否还有单线程模型的其他优点?

JLabel的Newline

如何在JLabel显示换行符? 例如,如果我想要: 你好,世界! 等等等等等等 这就是我现在所拥有的: JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER); 这是显示的内容: Hello World!blahblahblah 原谅我,如果这是一个愚蠢的问题,我只是学习一些Swing的基本知识…

如何在BlackBerry中自定义ListField?

我想在BlackBerry中自定义一个ListField,这个ListField能够列出图像和文本。 如何做到这一点?

select接收焦点时的文本框的所有内容(Vanilla JS或jQuery)

当文本框获得焦点时,什么是Vanilla JS或jQuery解决scheme将select文本框的所有内容?

JTable模型监听器过早检测插入的行(在绘制之前)

我有一个JTable ,可以有用户dynamic添加的行。 它位于一个JScrollPane ,所以当行数变得足够大时,滚动器变成活动的。 我的愿望是,当用户添加一个新行时,滚动器一直移动到底部,这样新的行在滚动窗格中可见。 我目前(下面的SSCCE)尝试使用表模型侦听器来检测行插入,并检测时强制滚动条一路下降。 然而,看起来这个检测“太早了”,因为模型已经更新了,但是新的一行还没有真正被绘制,所以在插入新行之前滚动器一直移动到底部,并且然后将新行插入到窗格末端(可见度不足)的下方。 显然这种方法是不对的。 什么是正确的方法? import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; public class TableListenerTest { private JFrame frame; private JScrollPane scrollPane; private JTable table; private DefaultTableModel tableModel; public static […]

将其他类的JPanels添加到cardLayout

我在3个独立的类中有3个窗口,我想使用cardLayout,这样当你点击下一个button时,下一个窗口就会出现。 如何将包含不同元素的JPanel添加到一个cardLayout? 这是第一个窗口:(唯一的区别是背景虽然 – 但它代表了我如何得到它的想法) public class Window1 extends JPanel implements ActionListener { static CardLayout cardLayout = new CardLayout(); public Window1() { init(); } private void init() { JPanel jp = new JPanel(new BorderLayout()); JPanel jp2 = new Window2(); //JPanel jp3 = new Window3(); JLabel textLabel = new JLabel("Window1"); jp.setBackground(Color.GREEN); jp.add(textLabel, BorderLayout.CENTER); JButton nextButton = […]