Tag: swing

具有input提示的Java JTextField

我想给我的JTextField添加一个提示值。 它应该看起来像<input type="text" title="bla"> Firefox渲染。 这将在后台创build一个带有文本“bla”的编辑字段。 如果文本框具有焦点标题,则文本消失,并且如果用户离开编辑框而没有文本,则重新出现。 有一个(免费)摆动组件做这样的事情吗?

如何将图像添加到JButton

我想添加一个图像到一个JButton,我不知道我错过了什么。 当我运行下面的代码时,这个button看起来就像我没有任何图像属性创build它一样。 Water.bmp在我的项目文件夹的根目录中。 ImageIcon water = new ImageIcon("water.bmp"); JButton button = new JButton(water); frame.add(button);

java.awt.EventQueue.invokeLater解释

我很好奇为什么我们必须使用java.awt.EventQueue.invokeLater来控制摆动组件。 为什么我们不能在正常的线程中做到这一点? 幕后究竟发生了什么? 从我注意到,如果我有一个JFrame我可以设置从主线程的真实或错误的可见性没有得到任何错误,它似乎工作。 那么,我通过使用java.awt.EventQueue.invokeLater到底是什么? 我也完全知道,我可以使用SwingUtilities.invokeLater但在这里解释 ,他们似乎是一回事。 感谢任何人的解释。 希望这是一个有效的问题。 编辑:回答wumpz问题我们可以创build一个jframe JFrame frame = new JFrame("Hello world"); frame.setSize(new Dimension(300, 300)); frame.setPreferredSize(new Dimension(300, 300)); frame.setMaximumSize(new Dimension(300, 300)); frame.setMinimumSize(new Dimension(300, 300)); frame.setVisible(true); frame.pack(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 在同一个线程上创build了以下内容。 for (int i = 0; i < 34; i++) { System.out.println("Main thread setting to "+(!frame.isVisible())); frame.setVisible(!frame.isVisible()); } 并没有投诉。

graphics在标题栏中呈现

graphics在标题栏中不断渲染。 我使用封装在jlabel中的缓冲图像,并使用生成的graphics对象在我的代码中绘制矩形。 这是jframe类构造函数的重要部分: super(); BufferedImage image=new BufferedImage(680,581,BufferedImage.TYPE_INT_ARGB); m_graphicsObject =image.getGraphics(); JLabel label=new JLabel(new ImageIcon(image)); // buttons, mouse events and other controls use listeners to handle actions // these listener are classes btn1 = new JButton("Go!"); //btn1.setPreferredSize(new Dimension(100, 30)); btn1.addActionListener(new button_go_Click()); //listener 1 btn2 = new JButton("Clear!"); //btn2.setPreferredSize(new Dimension(100, 30)); btn2.addActionListener(new button_clear_Click()); //listener 2 //always add created […]

在JPanel中旋转BufferedImage

我想旋转一个BufferedImage并将其显示在一个JLabel (这是一个JPanel )。 目前的结果产生一个黑色背景旋转10度的白色方形,但图像不存在于广场内。 我知道myPicture不是空白的,因为当不旋转的时候, myPicture本身在JPanel内部正确显示。 这里是代码: int w = myPicture.getWidth(); int h = myPicture.getHeight(); BufferedImage newImage = new BufferedImage(w, h, myPicture.getType()); Graphics2D graphic = newImage.createGraphics(); graphic.rotate(Math.toRadians(10), w/2, h/2); graphic.drawImage(myPicture, null, 0, 0); picLabel.setIcon(new ImageIcon(newImage));

Java Swing; 两个类,如果陈述和新的行动听众放在哪里?

纯粹的初学者问题在这里。 我正在修改一个代码,现在我坚持下面的问题。 我的计时器在上层被调用。 但是我的int数在下面的类中被调用。 每当我添加一个if语句像; if (count == 2) { t.stop();} 我得到的错误,因为int在下面的类和t(计时器)在上面的类。 当涉及两个类时,如何添加if语句? 如果我想添加一个新的actionlistenerbutton来停止计数,我把这个在上面或下面的类? 代码在这里 提前致谢

编写Swing组件:如何添加添加ActionListeners的能力?

我想创build一个(简单的,希望)自定义的Swing组件,通过组合现有的几个组件。 就我而言,它是一个由JLabel组成的开关开关,以及两个用于On和Off的JButton。 我通过扩展JPanel来开始OnOffSwitch。 构造函数添加子组件,并将其自身设置为button的ActionListener。 该类有一个isOn()方法来查询组件的当前状态。 我现在想添加将ActionListeners添加到OnOffSwitch类的function。 我预计这个function可以通过扩展一个像JPanel这样的Swing组件来实现,但是JPanel没有这个function。 通过源代码的外观,每个具有此function的Swing组件都会自行重新实现它:向列表添加侦听器,触发ActionEvents等。 什么是正确的方法来实现我想要的? 我可以从各种Swing组件中复制/粘贴代码(或者重新编写它的要点),或者我可以实现我自己的OnOffSwitchListener接口。 为了保持一致,似乎我所有的组件都应该使用ActionListeners。

JProgressBar不会更新

我正在尝试从这个问题的投票答案我发现的代码: 下载文件使用Java的Apache公共? 这是一个下载应用程序,看看,(我不熟悉JFrames和ActionEvents) Download.java package main; public class Download extends JFrame implements Runnable{ public static int total; public static int done; private static class ProgressListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { done = (int)((DownloadCountingOutputStream) e.getSource()).getByteCount(); jbar.repaint(); DownloadCountingOutputStream.parent.draw((int)((DownloadCountingOutputStream) e.getSource()).getByteCount());//redraw DownloadCountingOutputStream.parent.repaint(); } } public static JProgressBar jbar = new JProgressBar(); public void draw(int downloaded){System.out.println("downloaded: "+downloaded+ […]

保持文本检索的正确风格

我正在做一个类似聊天的应用程序。 为此,我有两个JTextPanes,一个是我正在写的,一个是显示消息。 这是处理从input到显示的文本传输的代码: String input = textPane.getText(); if(!input.endsWith("\n")){ input+="\n"; } StyledDocument doc = displayPane.getStyledDocument(); int offset = displayPane.getCaretPosition(); textPane.setText(""); try { doc.insertString(offset, input, set); } catch (BadLocationException ex) { Logger.getLogger(ChatComponent.class.getName()).log(Level.SEVERE, null, ex); } 问题是,如果我对input文本的某些单词有颜色,输出​​将全部着色。 所以当移动到显示时,颜色被应用于所有的文本(当input正确显示时)。 任何build议如何我可以正确地移动文本? 请注意,其他格式如粗体,斜体等也会发生同样的情况

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); } 编辑:添加代码部分