Tag: swing

如何更改JFrame中的JPanel?

简单来说,有一个简单的java swing应用程序,它由JFrame和其中的一些组件组成。 其中一个组件是一个JPanel,它意味着在用户操作上被另一个JPanel所取代。 那么做这样的事情的正确方法是什么? 我试过了 panel = new CustomJPanelWithComponentsOnIt(); parentFrameJPanelBelongsTo.pack(); 但这是行不通的。 你会build议什么?

JComboBoxselect更改监听器?

我试图从JComboBoxselect一个事件来触发。 我遇到的问题是,没有明显的addSelectionListener()方法。 我试图使用actionPerformed()但它永远不会触发。 重写JComboBox的模型,我没有想法。 如何获得JComboBox上的select更改通知? 编辑:我必须道歉,原来我使用JComboBox的行为不当的子类,但我会离开这个问题,因为你的答案是好的。 开始投票。 🙂

用javabutton在浏览器中打开一个链接?

如何在默认浏览器中打开一个链接,点击button button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { open("www.google.com"); // just what is the 'open' method? } }); ?

JProgressBar没有进展

所以我试图做一个下载器,显示进度条的下载进度。 但我有问题,因为它实际上并没有更新进度栏。 基本上它保持白色,当它是蓝色的。 如果有人可以帮忙,代码如下。 JProgressBar progressBar = new JProgressBar(0, ia); con.add(progressBar, BorderLayout.PAGE_START); con.validate(); con.repaint(); progressBar = new JProgressBar(0, ia); progressBar.setValue(0); System.out.print("Downloading Files"); while ((count = in.read(data, 0, downloadSpeed)) != -1){ fout.write(data, 0, count); if (count >= 2){ progressBar.setString("Downloading : " + ia + " @ " + count + "Kbs per second"); } else { […]

如何使用RescaleOp设置图像的大小

我正在写一个testing应用程序。 为图像设置Alpha我使用paintComponent方法。 观看下一个片段… public class TestImage extends JLabel{ public void paintComponent( Graphics g ) { super.paintComponent( g ); Graphics2D g2d=(Graphics2D)g; g2d.drawImage(this.bImage, rop, 0, 0); } public void setRescaleOp(RescaleOp rop){this.rop=rop;} } 如你看到的, g2d.drawImage(this.bImage,rop,0,0); 不允许设置宽度和高度,就像我使用g.drawImage(bImage,0,0,width,height,null); 所以问题是…在这种情况下如何设置bImage的宽度和高度? 任何有用的评论表示赞赏 安德鲁

在一个根容器中分层多个GlassPane

是否有可能为单个JFrame添加多个GlassPane ,或者是否必须使用具有Opacity属性的令人不舒服的LayeredPane 。 我附上了一些代码,显示了我想要做的事情(由@camickr提供)。 import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; public class MultiplayGlassPane { private static final long serialVersionUID = 1L; private JFrame frame = new JFrame("frameTitle"); private JPanel fPanel = new JPanel(); private Random random = new Random(); private final static Border MESSAGE_BORDER = new EmptyBorder(10, 10, 10, 10); private […]

JavaFX WebView成长为填充整个区域

我试图做一个扩展到周围的JPanel的javafx WebView。 根据这个线程: http : //www.coderanch.com/t/634791/JavaFX/java/Resizing-HTMLEditor-JavaFX ,在WebView中有一个错误,你需要调用GridPane.setHgrow和GridPane.setVgrow的WebView。 我用这些调用的代码,但WebView仍然是600x800px。 请注意,场景有一个蓝色的背景,所以你可以看到javafx的东西填充整个JPanel。 但WebView不会填充javafx Group / Scene。 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.layout.GridPane; import javafx.scene.layout.Priority; import javafx.scene.paint.Color; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; public class Main { private void initAndShowGUI() { // This method is invoked on […]

如何使用SwingWorker模拟缓冲的外围设备?

我将这个练习作为一个教学工具来帮助我刻录一些Java GUI编程概念。 我在寻找的是一个普遍的理解,而不是一个具体问题的详细解决scheme。 我期望编写这个“正确的”将教会我很多关于如何处理未来的multithreading问题。 如果这个论坛太笼统,可能属于程序员? 我正在模拟一个读卡器。 它有一个graphics用户界面(GUI),允许我们将卡片加载到漏斗中,然后按下开始(Start)等,但其主要的“客户端”是CPU,运行在单独的线程和请求卡上。 读卡器维护一个缓冲区。 如果卡片请求进来,而且缓冲区是空的,读卡器必须从漏斗读取一张卡片(这需要1/4秒钟,这是1962年)。 卡被读入缓冲区后,读卡器将缓冲区发送给CPU,并在下一个请求之前立即启动另一个缓冲区加载操作。 如果不仅缓冲器是空的,而且料斗中没有卡片,那么我们必须等到操作员在料斗中放置了一个平台并按下开始(总是启动缓冲器加载操作)。 在我的实现中,卡片请求以invokeLater()方式发送到读卡器,在EDT上排队运行。 在myRunnable.run()时间,一个缓冲区将是可用的(在这种情况下,我们可以把它发送到CPU,并启动另一个缓冲区加载操作),或缓冲区将是空的。 如果它是空的呢? 两种可能性:(a)飞行中已经有一个缓冲载入操​​作,或者(b)卡片仓是空的(或尚未启动)。 无论哪种情况,保持美国东部时间都是不可接受的。 工作(和等待)必须在后台线程上完成。 为了简单起见,我试图产生一个SwingWorker来响应每个卡请求,而不pipe缓冲区的状态如何。 伪代码是: SwingWorker worker = new SwingWorker<Void, Void>() { public Void doInBackground() throws Exception { if (buffer.isEmpty()) { /* * fill() takes 1/4 second (simulated by Thread.sleep) * or possibly minutes if we need to have another * […]

如何从添加到JLabel的JComponent返回XxxSize

我怎样才能正确地返回JComponent(s)添加到JLabel中的XxxSize 1。 figure >> lets LayoutManager works like as for JPanel, JLabel returns Size(0, 0) 第2位。 figure >> added some PreferredSize to the JLabel 3。 figure >> calculated PreferredSize from JComponent(s) added to the JLabel 4。 figure >> lets LayoutManager works changed JLabel to JPanel, now LayoutManager correctly calculated Dimension without using any XxxSize 注意使用Nimbus […]

JPanel&组件自动更改位置

您好我正在挥杆应用程序,但我面临一个问题。 当我第一次运行应用程序JPanel被放置在适当的位置,我决定设置内部的组件。 但是,当发生问题 我最小化&再次最大化框架窗口jpanel自动改变它的位置。 下面的图片显示了差异 正如我们可以看到第二个图像组件自动改变它的位置。 为此我写了下面的代码, jpanel_addPurchase = new JPanel(); jpanel_addPurchase.setLayout(null); jpanel_addPurchase.setBounds(400, 0, 500, 500); jpanel_addPurchase.setBackground(Color.white); JLabel lbl_title = new JLabel("Purchase Form"); lbl_title.setBounds(90, 20, 100, 100); jpanel_addPurchase.add(lbl_title); 并在框架中添加此面板使用, setContentPane(getJPanel()); 我哪里去错了?