相关疑难解决方法(0)

如何在Swing上将ImageIcon变为灰色

我想知道在Swing中是否有某种方法可以将ImageIcon转换为灰度,如下所示:

component.setIcon(greyed(imageIcon));
Run Code Online (Sandbox Code Playgroud)

java swing image image-processing grayscale

9
推荐指数
2
解决办法
3348
查看次数

在Jfreechart中更改图形的X轴起始值

我正在计算图像红色分量的直方图,并将其存储在redhisto []中.数组的索引表示强度(0到255),值表示具有该强度的像素数.然后使用JFreeChart绘制这些值.

我的问题是:

  1. 如何使X轴值从0开始.现在从负数开始.
  2. 我们可以更改图表中条形的颜色 获得输出图 代码是:

     public class Histogram extends ApplicationFrame {
       public Histogram(final String title) throws IOException {
        super(title);
        IntervalXYDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
       }
    
      private IntervalXYDataset createDataset() throws IOException {
       BufferedImage imageA = ImageIO.read(new File("XYZ.bmp"));
       int[] red = new int[imageA.getHeight()*imageA.getWidth()];
       int[] redhisto = new int[256];
       int[] pixel;
       int k= 0;
       for (int y = 0; y < imageA.getHeight(); y++) {
          for (int x = 0; …
    Run Code Online (Sandbox Code Playgroud)

java jfreechart

6
推荐指数
1
解决办法
5009
查看次数

多个IntervalBarRenderer的重叠

此示例演示如何通过在每个数据集中添加空系列来避免双轴上的多个条重叠.通过以下示例,我创建了四个DefaultIntervalCategoryDataset对象,每个对象都在自己独立的轴上(完整代码如下).

在下图中可以看到在每个数据集中添加空系列的优点,例如,系列2与系列1保持分开.

在此输入图像描述

但是,系列3仍然与系列4重叠,这就是系列3隐藏的原因(系列4).我找不到原因并得到解决方案.

如何避免这种过度重复,还有其他替代技术以更有效和方便的方式演示多类别问题(在我的问题中有间隔)?

public class IntervalBarChartTest extends ApplicationFrame {
    public IntervalBarChartTest(String title) {
        super(title);
        JPanel chartPanel = createDemoPanel();
        chartPanel.setPreferredSize(new Dimension(900, 270));
        setContentPane(chartPanel);
    }
    private static DefaultIntervalCategoryDataset createDataset1() {

        Number[] series1_Start = new Number[] {25,50};
        Number[] series1_End = new Number[] {50,75};
        Number[] dymmy1_Start = new Number[] {null,null};
        Number[] dummy1_End = new Number[] {null,null};
        Number[][] starts = new Number[][]{series1_Start,dymmy1_Start};
        Number[][] ends = new Number[][] {series1_End,dummy1_End};
        String[]  categoryKeys = {"50th%ile", "90th%ile"};
        String[] seriesKeys = {"Series1",""};
        DefaultIntervalCategoryDataset dataset= new DefaultIntervalCategoryDataset(seriesKeys,categoryKeys,starts, ends);
        return …
Run Code Online (Sandbox Code Playgroud)

jfreechart

6
推荐指数
0
解决办法
110
查看次数

程序不访问扩展JPanel类的方法paintComponent()

这是 JFrame

package client.connection;

import java.awt.Dimension;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JFrame;


class DrawFrameRemoteControl extends JFrame
{
    private DrawPanelRemoteControl imagePanel;
    private ClientRemoteControlConnection clientRemoteControlConnection;
    private ObjectInputStream clientInputStream;
    private ObjectOutputStream clientOutputStream;
    private Dimension imageDimension;
    private Dimension serverDimension;

    public DrawFrameRemoteControl(Dimension imageDimension,ClientRemoteControlConnection clientRemoteControlConnection,ObjectInputStream clientInputStream,ObjectOutputStream clientOutputStream,Dimension serverDimension)
    {
        super("Remote Desktop Control");

        this.clientRemoteControlConnection=clientRemoteControlConnection;
        this.clientInputStream=clientInputStream;
        this.clientOutputStream=clientOutputStream;
        this.imageDimension=imageDimension;
        this.serverDimension=serverDimension;

        imagePanel=new DrawPanelRemoteControl(imageDimension);
        add(imagePanel);


        setSize(imageDimension.width,imageDimension.height);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setLocationRelativeTo(null);
    }

    void drawNewImageGrayscale(byte[] array)
    {
        imagePanel.setNewImageGrayscale(array);
        imagePanel.repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是扩展的JPanel类 -

package client.connection;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit; …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jframe repaint

5
推荐指数
1
解决办法
1972
查看次数

自定义图形 - Java Swing

我正在尝试用 Java 创建自定义动态直方图类型的条形图。我已经搜索了很多,但找不到实现这一目标的方法。

我知道JFreeChart库,但它不能满足我的需求。这是 JFreeChart 直方图的样子:

在此处输入图片说明

但我想要的是一个只有 X 轴的动态直方图。
这张经过Photoshop处理的图像将使其更容易理解。 在此处输入图片说明

JFrame 将有固定的边界。如您所见,应该没有 Y 轴。条形的高度应根据值自动调​​整。

请帮我建这个!提前致谢。

java swing graph jfreechart

5
推荐指数
1
解决办法
6230
查看次数

动态更改 JFreeChart 直方图颜色?

我正在尝试显示图像的直方图并仅显示一些颜色。我已经用 JFreeChart 和 createXYLineChart 做到了这一点,并通过遍历所有像素来获取所有数据。

为了加快速度,我正在尝试使用“createHistogram”来实现。我遵循了这个代码

要使用新值更新图表,我使用了这两种方法:

XYPlot plot = (XYPlot) chart.getPlot();
plot.setDataset(setHistogram(red, green, blue));
Run Code Online (Sandbox Code Playgroud)

作为 setHistogram 一个返回 HistogramDataset 的方法取决于哪个复选框被激活(布尔红色、绿色和蓝色)。

这按预期正常工作。

当我这样做时,我必须做的第二件事是更新每个系列的颜色,否则它们将获得默认值。我按照与值大致相同的程序进行了操作:

private void setHistogramColors(boolean red, boolean green, boolean blue) {
    XYPlot plot = (XYPlot) chart.getPlot();
    XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer();
    renderer.setBarPainter(new StandardXYBarPainter());
    Paint[] paintArray = null;
    if (red) {
        if (green) {
            if (blue) {
                paintArray = new Paint[3];
                paintArray[0] = new Color(0x80ff0000, true);// translucent red, green & blue
                paintArray[1] = new Color(0x8000ff00, true);
                paintArray[2] = new …
Run Code Online (Sandbox Code Playgroud)

java swing colors jfreechart histogram

5
推荐指数
1
解决办法
1909
查看次数