Tag: 用户界面

我如何获得一个对话框样式的活动窗口来填充屏幕?

我正在使用对话框主题设置的活动,我希望它是全屏。 我尝试了各种各样的东西,甚至通过WindowManager将窗口手动扩展为全宽和高度,但没有任何工作。 显然,一个对话窗口(或对话框主题的活动)只会根据其内容进行扩展,但即使这样也并不总是有效。 例如,我展示了一个宽度和高度设置为FILL_PARENT的进度条圆(其布局容器也一样),但是对话框仍然围绕着更小的进度条而不是填充屏幕。 必须有一种方法来显示一个对话窗口内的小东西,但它扩大到全屏幕的大小,而不是其内容的大小?

如何从不同的类定义多个JButton动作

我正在编写一个程序,我需要根据单击哪个button,为单独的类执行不同的操作。 public class NewJFrame{ public static JButton b1; public static JButton b2; public static JButton b3; } public class Slot{ int value; JButton button; Slot(int value, JButton button) { this.value=value; this.button=button; } } public class Game{ Slot[] slots=new Slot[3]; Game(){ slots[0]=new Slot(1,NewJFrame.b1); slots[1]=new Slot(2,NewJFrame.b2); slots[2]=new Slot(3,NewJFrame.b3); } public void actionPerformed(ActionEvent e) { for(int i=0;i<3;i++){ if(e.getSource()==slots[i].button) […]

Java Swing:如何在显示JFrame之前实现login屏幕?

我试图制作一个小游戏,首先向玩家展示一个简单的login屏幕,在这里他们可以input他们的名字(我稍后需要它来存储他们的游戏状态信息),让他们select难度等级,一旦玩家点击播放button就显示主游戏画面。 我也想让玩家导航到(有希望他们相当大)奖杯收集,同样在他们看来是一个新的屏幕。 到目前为止,我有一个主要的游戏窗口,其中有一个网格布局和一个游戏的作品(对我来说耶!)。 现在我想添加上面的function。 我怎么去做这个? 我不认为我想要去多个JFrame路线,因为我只想一次在任务栏中显示一个图标(或者将它们的可见性设置为false也会影响图标?)我是否要制作和销毁布局或面板或这样的事情? 我有什么select? 我怎样才能控制显示的内容? 特别是考虑到我的新手技能?

Java swing的GUI冻结

我正在编写一个使用套接字的Java客户端/服务器GUI应用程序,这里是问题: 我有一个button来开始监听指定的端口: buttonactionPerformed方法 private void listenButtonActionPerformed(java.awt.event.ActionEvent evt) { int port = Integer.parseInt(portTextfield.getText(), 10); try { socket.listen(port); } catch (IOException ex) { } } 这里是socket.listen方法 public static void listen() throws IOException { ServerSocket ss = new ServerSocket(port); while (true) new socket(ss.accept()); } “套接字”类扩展“线程” 所以在ss.accept()返回一个值之后,它会在单独的线程中创build新的套接字实例。 点击button后,GUI会冻结,因为在socket.listen方法中存在无限循环。 我怎样才能避免呢?

Java GUI中的旋转方形面板

我想知道是否有可能实现一个方形但旋转90度的GUI面板(可能是JPanel)。 显然,将会有一个包含这个面板的顶层容器,而主面板在视觉上就是这个旋转的正方形面板。 更具体地说,我将一个面板(称为'A')分成4个相等的方形子面板,并用JLabels填充这些子面板,为此我想使用GridLayout。 最后,我会旋转'A'90度,以给我想要的。 从我读其他类似的问题,似乎你不能旋转JPanel本身,但你可以旋转其中包含的内容。 这适用于我的情况吗? 希望有人能指出。 谢谢。

一个或多个资源的目标是“头”,而不是“头”组件已经在视图中定义

我在GlassFish 3.2上使用NetBeans 7.3.1和PrimeFaces 3.5。 我用PrimeFaces组件创build了一个JSF页面。 该项目运行良好,但PrimeFaces UI look'n'feel完全缺失。 我只在服务器日志中的消息下面注意到: 一个或多个资源的目标是“头”,而不是“头”组件已经在视图中定义 这是什么意思,我该如何解决PrimeFaces用户界面look'n'feel?

在paintbrushtypes的GUI中,paintComponent()与paint()和JPanel vs Canvas

我从中得到了一些有趣的想法和批评, 这篇文章和这篇文章(见最后一篇关于GUI代码的文章)。 尽pipe如此,我仍然对一些事情感到困惑。 主要是显示用户引入graphics的最便宜方式是什么? 更具体地说,我通过在MouseDragged()方法中使用paintComponent(getGraphics())方法(相应的AuxClass2和AuxClass1 )将该类的一个对象与JPanel类中的paintComponent(getGraphics()) MouseDragged()方法一起使用。 显然,使用getGraphics()和paintComponent()而不是repaint()是不好的想法,我怀疑与内存使用有关。 每次用户拖动鼠标时也调用AuxClass2也是一个坏主意。 JPanel vs Canvas(比如swing vs awt)也有点混乱。 什么是什么时候用? 我一直在试图find解决方法,但没有find一个,特别是对于getGraphics()方法:如何将graphics添加到面板?

以编程方式减轻颜色

动机 我想find一个方法来采取任意的颜色,并减轻一些阴影,所以我可以编程方式创build一个从一个颜色到一个更轻的版本的一个很好的渐变。 渐变将用作UI中的背景。 可能性1 很明显,我可以分开RGB值,并逐个增加一定的数量。 这实际上是我想要的吗? 可能性2 我的第二个想法是将RGB转换为HSV / HSB / HSL(色相,饱和度,数值/亮度/亮度),稍微提高亮度,稍微降低饱和度,然后将其转换回RGB。 这会有一般的预期效果吗?

更有效的方式从服务更新UI比意图?

我目前在Android中有一个Service,它是一个示例VOIP客户端,所以它侦听出SIP消息,如果它接收到一个,它将启动一个带UI组件的Activity屏幕。 然后,以下SIP消息确定活动在屏幕上显示的内容。 例如,如果来电将显示“应答”或“拒绝”或拨出电话,则将显示拨号屏幕。 在那一刻我使用Intents来让活动知道它应该显示什么状态。 一个例子如下: Intent i = new Intent(); i.setAction(SIPEngine.SIP_TRYING_INTENT); i.putExtra("com.net.INCOMING", true); sendBroadcast(i); Intent x = new Intent(); x.setAction(CallManager.SIP_INCOMING_CALL_INTENT); sendBroadcast(x); Log.d("INTENT SENT", "INTENT SENT INCOMING CALL AFTER PROCESSINVITE"); 因此,活动将有一个广播接收者注册这些意图,并将根据最后收到的意图切换其状态。 示例代码如下所示: SipCallListener = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(SIPEngine.SIP_RINGING_INTENT.equals(action)){ Log.d("cda ", "Got RINGING action SIPENGINE"); ringingSetup(); […]

使用线程更新Android UI

我正在写一个Android聊天应用程序,我正在监听连接,我收到的数据,我可以看到它在Log.d,但每当我尝试更新我的UI应用程序崩溃..代码是 private class chatReceiver implements Runnable { @Override public void run() { try { skt = new DatagramSocket(Integer.parseInt(Main.prefs.getString("port_number", "5432"))); DatagramPacket rcvPkt = new DatagramPacket(rcvBuf,rcvBuf.length); String ack = "Hello from our SimpleUDPServer"; byte[] sndBuf = ack.getBytes(); while (true) { Log.d("Server received: " ,"entered loop"); skt.receive(rcvPkt); String rcvMsg = new String(rcvBuf, 0, rcvPkt.getLength(), "UTF-8"); Log.d("Server received: " […]