小编exi*_*t_1的帖子

Java:维护JPanel背景图像的纵横比

我有一个JPanel带有彩绘背景图像和一个布局管理器,其中包含其他较小的图像,所有这些都在一个内部JFrame.背景图像非常大,我希望能够保持其纵横比,无论是在大型还是小型显示器上.

最终,我希望能够将我LayoutManager和它的细胞中的较小图像"粘合"到背景图片上.

我四处寻找资源,似乎很多例子都使用了,BufferedImage但我不是; 这会造成问题吗?我将在下面发布我的代码来绘制图像,如果我缺少任何信息,请告诉我.

public class MonitorPanel extends JPanel {
    Image img;
    public MonitorPanel() throws MalformedURLException {
        //add components

        try {
            img = ImageIO.read(new File("src/customer_vlans.jpg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
protected void paintComponent(Graphics g)
{
    //paint background image
    super.paintComponent(g);
    //g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
    g.drawImage(img, 0, 0, this);

}

}
Run Code Online (Sandbox Code Playgroud)

编辑:我应该提到我知道宽高比公式: 原始高度/原始宽度x新宽度=新高度 然而,我不知道如何正确使用它对我有利.

java swing background-image jpanel aspect-ratio

19
推荐指数
1
解决办法
3万
查看次数

如何在linux中的classpath中添加多个jar文件

好的,我是linux和命令行的新手,对java来说还是新手.我有一个实习建立一个java程序.我终于在我的机器(Windows)上完成了它,现在我必须将它迁移到linux机器进行测试,然后让它作为可执行文件运行.我已经做了很多关于linux和阅读类路径的阅读和研究,但仍然很难完全理解.它只是没有点击我.任何人都可以使用示例以简化的方式解释类路径的目的吗?对我来说最令人困惑的一个方面实际上是定义jar的物理路径.我是从usr开始的,还是只需要从jvm文件夹开始?如果重要,我的java程序不在jvm文件夹中.任何人都可以为我解释一下吗?

编辑:非常感谢你们的帮助,我不能说我完全清楚但我对情况的理解要好得多.

java linux jar classpath

15
推荐指数
3
解决办法
12万
查看次数

Eclipse为什么说"存在错误"但在控制台中什么都没有显示?

我正在使用Eclipse构建一个程序,当我去运行它时,它说"存在错误",无论如何我运行它,控制台中没有错误显示,应用程序运行一个空白屏幕.为什么是这样?

附加信息:我最近一直在尝试将我之前的布局从非常粗糙的形式更改为使用GridBagLayout,但是我对使用布局不是很熟悉.我强烈怀疑问题在于,或者围绕我的布局,因为程序在我尝试进行更改之前正常运行.

这是我的两个涉及布局的主要类,抱歉它很乱,我注释了很多行,以前的布局,以防我必须恢复它:

import java.awt.*;
import java.sql.SQLException;
import java.util.LinkedList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.plaf.ColorUIResource;

import java.sql.*;

public class MainDisplay extends JFrame {

static Toolkit tk = Toolkit.getDefaultToolkit();
static int Width = (int)tk.getScreenSize().getWidth();
static int Height = (int)tk.getScreenSize().getHeight();

//public static JFrame frame = new JFrame();
public static JPanel pane = new JPanel();


private static String targetIpHolder;
private static String attackerIpHolder;
private static int threatLevelHolder; 
private static …
Run Code Online (Sandbox Code Playgroud)

java eclipse layout swing gridbaglayout

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

如何查看 /bin/sh 指向的内容

我正在阅读 /bin/sh 和 /bin/bash 之间的差异,并遇到了这个有趣的问题/答案:here

我对在我的标题中提出同样问题的答案发表了评论,他回复了更新的答案:

如何找出系统上 /bin/sh 指向的内容?

复杂的是 /bin/sh 可能是符号链接或硬链接。如果它是符号链接,则解决它的可移植方法是:

> % file -h /bin/sh
> /bin/sh: symbolic link to bash 
Run Code Online (Sandbox Code Playgroud)

如果是硬链接,请尝试

> % find -L /bin -samefile /bin/sh 
> /bin/sh 
> /bin/bash
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但遇到了麻烦,所以我想我应该提出一个单独的问题。

我从链接答案得到的结果:

>file -h /bin/sh
>/bin/sh: executable (RISC System/6000) or object module

>find -L /bin -samefile /bin/sh
>find: bad option -samefile
Run Code Online (Sandbox Code Playgroud)

我缺少什么?我正在运行 AIX:

>oslevel -s
7100-03-03-1415
Run Code Online (Sandbox Code Playgroud)

unix bash shell aix

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

让Java在循环之间休眠,在Linux上由命令行指定的休眠时间

我被指派在linux机器上设计一个java程序:

  1. 连接到数据库
  2. 读取记录
  3. 检索某些信息并根据称为"threat_level"的字段发送到Nagios
  4. 读取下一条记录并重复步骤3,直到读完所有记录

现在,我需要每隔几分钟运行一次; 所以我的合作伙伴所做的是创建一个脚本,使用循环来运行程序,睡几分钟,然后重复.

最近,我的老板告诉我们它的好,但希望整个程序完全自包含在java中; 意味着它在java中循环和休眠.最重要的是,他希望每次运行程序时都可以通过命令行确定睡眠持续时间.

我做了一些研究,似乎在某些情况下使用Thread.sleep()是低效的,我无法判断这是否是其中之一.另外,我还不清楚如何在运行程序时通过命令行确定睡眠时间.如有必要,我可以提供代码.

java linux command-line sleep

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

Java将图像从URL添加到我的JPanel中

我知道关于这个问题已经发布了很多问题和答案,但我相信我的情况有点扭曲.我在JFrame中有一个JPanel; Jpanel具有网络地图的彩绘图像背景.我使用MigLayout创建了一个布局.在这个布局的单元格内部,我想显示从网址获取的图像.扭曲是在我的项目中进一步向下,我希望能够每5秒左右刷新一次该图像.

话虽这么说,我是否应该采用一种特殊的方式来添加我的图像,以便以后在每5秒刷新一次这些图像的项目中让自己变得容易?

如果我缺少任何必要的额外信息,请告诉我.

java url swing image jpanel

3
推荐指数
1
解决办法
612
查看次数

如何更改所有私有JLabel的字体大小

我也有类似的问题,比如这个,但对我来说我有25+私人Jlabel之下,我给了,当我宣布它的值.我在构造函数中使用GridBagLayout将这些JLabel添加到JPanel.如果我按照链接中给出的答案行使用某些内容,则只会更改构造函数中添加的JLabel.

所以在我看来,如果我想改变我的私有JLabel的字体大小,我将不得不单独定义它们的字体大小,或者更改构造函数中的默认值,然后添加我的JLabel.但是,我确信必须有另一种更简单的方法,但我只是没有经验或理解来解决它,或者从其他类似问题的答案中做出适当的调整.

我不认为这确实需要我展示我的代码,但如果它有帮助我可以这样做.

public class LaborRecordPanel implements
Printable, ActionListener {

private Color shade = new Color(201,201,201);

private ImageIcon logoIcon = new ImageIcon("Images/fici_logo1.jpg");
private JLabel logoLabel = new JLabel(logoIcon);

private JLabel authorizedBy = new JLabel("AUTHORIZED BY:");
private JLabel toCertify = new JLabel("THIS IS TO CERTIFY THAT THE ABOVE LABOR HAS BEEN PERFORMED.");

private JLabel laborRecordNO = new JLabel("NO.");
private JLabel nameOfJob = new JLabel("NAME OF JOB:");
private JLabel customerPO = new JLabel("CUSTOMER PO #:");
private JLabel contractNO …
Run Code Online (Sandbox Code Playgroud)

java fonts swing jlabel

3
推荐指数
1
解决办法
769
查看次数

是否有我不知道的OpenStreetMap/MapQuest托管的地图图块属性?

我正在改变如何将我的地图图像从Google maps api获取到使用OpenStreetMap Data的MapQuest托管的地图图块.我正在切换谷歌地图,因为我达到了我没想到的每日请求限制,我没有使用OpenStreet api,因为虽然他们的数据是免费的,但他们的图块有一个限制,我只需要一个图像.因此,我在这里使用MapQuest托管的地图图块.

我想我理解它,但有些事情我希望能够做但却找不到任何文件.例如,如果可能的话,我想要一个500x300的图像尺寸,或者至少512*512(这是瓷砖出来的双256*256).我还希望能够显示标记.这可能吗?

我使用此处的代码将我的纬度和经度数据转换为x和y坐标:

 public class slippy {
 public static void main(String[] args) {
 int zoom = 9;
 double lat = 42.8549;
 double lon = -78.863;
 System.out.println("http://otile1.mqcdn.com/tiles/1.0.0/map/" + getTileNumber(lat, lon, zoom) + ".png");
 }
 public static String getTileNumber(final double lat, final double lon, final int zoom)    {
 int xtile = (int)Math.floor( (lon + 180) / 360 * (1<<zoom) ) ;
 int ytile = (int)Math.floor( (1 - Math.log(Math.tan(Math.toRadians(lat)) + 1 / Math.cos(Math.toRadians(lat))) / Math.PI) / 2 …
Run Code Online (Sandbox Code Playgroud)

java geocoding openstreetmap mapquest

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

Java for循环逻辑问题

我无法理解为什么我的for循环没有按照我的意愿行事.我的循环的目的是将多个文本字段添加到GUI,准确地说是70.7横穿,10横.它添加了很好的字段,但是停止了比我想要的更短的一行和一列.这似乎足以确定问题的信息,但我不能,所以我来到这里.

        for(int i = 0; i < 6; i++){
            for(int j = 0; j < 9; j++){
                OT2Field[i][j] = new JTextField();
                OT1Field[i][j] = new JTextField();
                STField[i][j] = new JTextField();
            }
        }

        int xPointer = 3;
        int yPointer = 7;
        for(int i = 0; i < 6; i++){
            for(int j = 0; j < 9; j++){
                addTimeFieldBorder0010(option3, OT2Field[i][j], gridbag, gbc, xPointer, yPointer, 1, 1, 0);
                yPointer = yPointer + 3;
            }
            xPointer++;
            yPointer = 7;
        }


    }

    private void addTimeFieldBorder0010(JComponent container, …
Run Code Online (Sandbox Code Playgroud)

java for-loop

1
推荐指数
3
解决办法
120
查看次数