Tag: java

在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议如何我可以正确地移动文本? 请注意,其他格式如粗体,斜体等也会发生同样的情况

错误:'其他'没有'如果'

如果没有声明,就得到别的东西 import java.util.Scanner; public class LazyDaysCamp { public static void main (String[] args) { int temp; Scanner scan = new Scanner(System.in); System.out.println ("What's the current temperature?"); temp = scan.nextInt(); if (temp > 95 || temp < 20); System.out.println ("Visit our shops"); else if (temp <= 95) if (temp >= 80) System.out.println ("Swimming"); else if (temp […]

math.random,只生成一个0?

下面的代码只是产生一个0; – ; 我究竟做错了什么? public class RockPaperSci { public static void main(String[] args) { //Rock 1 //Paper 2 //Scissors 3 int croll =1+(int)Math.random()*3-1; System.out.println(croll); } } 编辑,另一张海报提出了一些解决scheme。 int croll = 1 +(int)(Math.random()* 4 – 1); 感谢大家!

在迭代数组的所有元素时ArrayIndexOutOfBoundsException

如何处理这个exception“ArrayIndexOutOfBoundsException”我的代码:我创build一个64长度的数组,然后我初始化每个索引,然后我打印索引,以确保我充满所有索引,但它打印到63然后给出exception! 任何想法 public static void main(String [] arg) { int [] a=new int [64]; for(int i=1;i<=a.length;i++){ a[i]=i; System.out.println(i); } }

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

使用getGraphics()绘制对象而不扩展JFrame

我如何绘制一个没有类的对象(它扩展了JFrame )? 我find了getGraphics方法,但它不绘制对象。 import javax.swing.*; import java.awt.*; public class Main { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(600, 400); JPanel panel = new JPanel(); frame.add(panel); Graphics g = panel.getGraphics(); g.setColor(Color.BLUE); g.fillRect(0, 0, 100, 100); } }