小编Sal*_*eek的帖子

JLabel.setBackground(颜色)不起作用?

在这个SSCCE代码中:

这种方法有效

label.setForeground(Color.GREEN);

但是下一个方法不起作用!

label.setBackground(Color.BLUE);

import java.awt.*;
import javax.swing.*;

public class LabelColorTest extends JPanel
{

    static JLabel label;
    JPanel panel;

    public LabelColorTest()
    {
        label = new JLabel();
        label.setVerticalAlignment(JLabel.CENTER);
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setText("Hello world");

        panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add(label, BorderLayout.CENTER);

        label.setForeground(Color.GREEN);  //HERE
        label.setBackground(Color.BLUE);  //HERE


        this.setLayout(new BorderLayout());
        this.add(panel);
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("Hellow world");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 250);
        frame.add(new LabelColorTest(), BorderLayout.CENTER);
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                UIManager.put("swing.boldMetal", …
Run Code Online (Sandbox Code Playgroud)

java swing colors

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

要设置的值:"Minimum Required SDK","Target SDK"和"Compile with"

我知道有很多问题,我也读过这个页面.但是,我仍然对确切的选择感到困惑.

如果我有一部运行Android 2.3.6的手机

我知道Minimum Required SDK应该是我的应用支持的Android的最低版本.因此,例如,我会选择Android 2.2或小于该值Android 1.5


令人困惑的部分Target SDKCompile with

我在下面安装了以下内容:( Android 2.3.6SDK管理器中没有)

Android 4.2.2(API 17)
Android 3.0(API 11)
Android 2.3.3(API 10)
Android 2.2(API 8)

Target SDK应设置为这是最大的Android 4.2.2,不管是什么我的手机使用; 这是Android 2.3.6

选择Android 4.2.2将涵盖下面的所有手机?是对的吗?

要么

它应该设置为我的手机的确切/最接近的值.这是可用的Android 2.3.3?但不要超过我的手机Android 2.3.6


Compile with必须设置为最大值Android 4.2.2还是什么?

sdk android

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

Java:为什么检查"\n"与使用System.getProperty("line.separator")添加的新行不匹配

(更新的问题)

首先,我认为这"\n"相当于System.getProperty("line.separator")

我写了一些与Strings一起使用的方法,其中一些方法检查是否存在新行

if (string.charAt(i) == '\n') {//do something;}

但我注意到检查"\n"与添加的新行不匹配System.getProperty("line.separator")

这是一个SSCCE来证明我的主张!:

描述:
两串相同的文字; 一个alpha_String使用添加了新行"\n",另一个beta_String添加了新行System.getProperty("line.separator")

有一个名为的方法String removeExtraNewLines(String)用于删除String中的任何额外新行并将其返回; 正如其标题所示.使用此方法过滤了两个字符串.

这两个按键buttonAlphabuttonBeta每一个设置的文本JTextArea与过滤字符串

你会注意到方法捕获/匹配并删除额外的新行, alpha_String但不要执行相同的操作beta_String

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class NewLineTest extends JPanel
{

    JPanel buttonPanel;
    JPanel textAreaPanel;
    JButton buttonAlpha;
    JButton buttonBeta;
    JTextArea textArea;
    String n = "\n";
    String s = System.getProperty("line.separator");
    String alpha_String; …
Run Code Online (Sandbox Code Playgroud)

java newline

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

JDBC:只有当`con.commit`没有成功时,`con.rollback()`才有效吗?

我是Java JDBC的新手,并开发了小型数据库应用程序.我正在学习
O'Reilly - 使用JDBC和Java第2版进行数据库编程.

con.rollback()有效果只有在con.commit没有成功?

实际上我猜con.rollback()即使con.commit()成功也会产生影响.这意味着将其用作" 撤消 "动作.

我成功con.rollback()后试着打电话con.commit(),但是我没猜到.好吧/预期呢?

这个例子来自我上面提到的那本书:

con.rollback()被注释掉了.它接近尾声con.close().尝试取消注释.成功con.rollback()后不回滚东西con.commit().

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UpdateLogic
{

    public static void main(String args[])
    {
        Connection con = null;

        try
        {
            String driver = "com.mysql.jdbc.Driver";
            Class.forName(driver).newInstance();
            String url = "jdbc:mysql://localhost:3306/Company";
            Statement s;
            con = DriverManager.getConnection(url, "root", "");
            con.setAutoCommit(false); // make sure auto commit is off!
            s = con.createStatement();// …
Run Code Online (Sandbox Code Playgroud)

java commit jdbc rollback

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

如何设置"JOptionPane.showMessageDialog"的位置

我想让JOptionPane.showMessageDialog消息显示出来

  • 屏幕上的任何位置.
  • 相对于JFrame.(不在JFrame的中心)

例如,这将在作为参数提供的JFrame的中心显示消息 thisFrame

 JOptionPane.showMessageDialog(thisFrame, "Your message.");
Run Code Online (Sandbox Code Playgroud)

这将在屏幕中心显示与任何JFrame无关的消息.

JOptionPane.showMessageDialog(null, "Your message.");
Run Code Online (Sandbox Code Playgroud)
  • 我想要的是在任何我想要的地方设置消息的位置

  • 我想要的是设置消息相对于JFrame的位置(不在JFrame的中心)

怎么样?

java layout swing position

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

Java:如何从任何JComponent中删除默认的KeyStrokes?

我想控制哪个按键属于哪个按键Jcomponent.我甚至想知道如何删除与a关联的默认击键,Jcomponent并将其替换为其他喜欢的击键.

我按照这个oracle 教程,它给出了一个JButton的例子,我尝试了它并且它工作正常,但是当我用JComboBox尝试它时它不起作用!

我试图删除SPACE密钥,这是阻止JComponent响应SPACE按下

我用这段代码删除了SPACE密钥:

firstButton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none");
Run Code Online (Sandbox Code Playgroud)

JComboBox也是一样

sizesComboBox.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none");
Run Code Online (Sandbox Code Playgroud)

但是不起作用,它(JComboBox)仍然响应SPACE密钥

为此firstButton,我删除了SPACE印刷机的效果; 我添加了键F,所以firstButton当你按下F键盘上的键时,按下它,蚂蚁不响应SPACE(意图).请注意,F即使firstButton没有焦点也会发生按下(JComponent.WHEN_IN_FOCUSED_WINDOW)

这是一个显示我的示例的SSCCE代码:
注意:我故意没有将上面的代码行添加到第二个按钮"secondButton",所以它仍然SPACE默认响应.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;

public class KeyStrokeTest extends JPanel
{

    JPanel widgetPanel;
    JPanel textAreaPanel;
    JButton firstButton;
    JButton secondButton;
    JTextArea textArea;
    JComboBox<Integer> sizesComboBox;

    public …
Run Code Online (Sandbox Code Playgroud)

java swing keystroke key-bindings jcombobox

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

为什么JOptionPane中的JScrollPane没有显示其所有内容?

我试图将组件添加到JPanel,然后将此面板放入JScrollPane,然后将JScrollPane放入JOptionPane.

问题:只添加了19行组件.有一个for循环确定组件的行数,如果将条件计数器更改为19或更小,则将显示所有这些.

这是问题的SSCCE

import java.awt.Dimension;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class DynamicGroupLayout extends JPanel
{

    JButton addRecordButton;
    JTextField[] FieldsArray;
    JLabel[] LabelsArray;
    GroupLayout layout;
    JScrollPane scrollPane;

    public DynamicGroupLayout()
    {
        addRecordButton = new JButton("add record");
        layout = new GroupLayout(this);
        this.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        scrollPane = new JScrollPane(this);
        scrollPane.getVerticalScrollBar().setUnitIncrement(16);
        scrollPane.setPreferredSize(this.getPreferredSize());

        setTextFields();
        showDialog();
    }

    @Override
    public Dimension getPreferredSize()
    {
        return new Dimension(400, 500);
    }

    private void setTextFields()
    {
        int num = 30;  //If …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane joptionpane

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

如何从 DataEntities.edmx 中正确删除存储过程?

如果我使用“存储过程”文件夹中的 Visual Studio Server Explorer 定义存储过程myStoredProcedure,那么我会转到.edmx更新模型。

我可以用那个myStoredProcedure在后面的代码中使用它,并且可以被 IntelliSense 检测到,并且工作正常。

当我myStoredProcedure从数据库和.edmx模型中删除时。它仍然被 IntelliSense 检测到。即使它在服务器资源管理器 ->“存储过程”文件夹中也没有任何痕迹.emdx即使它在服务器资源管理器 ->“存储过程”文件夹和“存储过程/函数”文件夹

使用时不会显示编译错误,但会显示运行时错误(当然是预期的)。

函数 import 'DataEntities.myStoredProcedure' 无法执行,因为它未映射到存储函数。

myStoredProcedure如果我在数据库->服务器资源管理器->“存储过程”中再次重新定义,并更新.edmx模型。IntelliSense 检测到两个:

  • myStoredProcedure -> 这是旧的,会导致运行时错误。
  • myStoredProcedure1-> 这是新的,工作正常。

那么如何正确地从中删除存储过程DataEntities.edmx呢?

stored-procedures entity-framework

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

在Java中,如何实现这种类型的数字舍入?

我正在写一个小型物理应用程序.我打算做的是进行数字舍入.问题是它不是一个固定的舍入,而是一个取决于十进制数值的变量舍入.我将解释这个问题.

  • 我总是需要保留整个整数部分(如果有的话)和前五个十进制数字(如果有的话).
  • 总是使用半上舍入.

    21.1521421056变为21.15214
    34.1521451056变为34.15215

  • 如果结果只包含十进制数字,则:

    • 如果前五位数字包括非零数字,则保留它们.

      0.52131125变为0.52131
      0.21546874变为0.21547
      0.00120012变为0.0012

    • 如果前五位数字都是零位数0.00000,则前往包含非零数字的前五位数字.

      0.0000051234变为0.0000051234
      0.000000000000120006130031变为0.00000000000012001

我需要在工作时玩这个四舍五入,BigDecimal因为这是我需要的要求.

java decimal rounding

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

如何在不破坏默认实现的情况下为JPanel实现MouseWheelListener?

只是; 我有一个JPanel里面的JScrollPane;

正如所料; JScrollPane默认情况下会监听,MouseWheelEvent以便在滚轮旋转时以及光标悬停在滚轮上时滚动效果很好JPanel.

在那之后; 我刚刚更新,JPanel以便它实现MouseWheelListener,我为JPanel自己添加了这个鼠标滚轮监听器.

@Override
public void mouseWheelMoved(MouseWheelEvent e) {
    if (e.isControlDown()) {
        if (e.getWheelRotation() < 0) {
            System.out.println("mouse wheel Up");
        } else {
            System.out.println("mouse wheel Down");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

JPanel响应这个实施时都; 在Ctrl被按下和车轮旋转且当光标悬停在JPanel.但是默认行为JScrollPane却意外丢失了!

当我在光标悬停在JPanel滚动时旋转滚轮JScrollPane没有响应!

看起来; 这个实现MouseWheelListener打破了默认的a JPanel.

所以; 如何实现MouseWheelListenerJPanel不破坏它的默认实现?

java swing jpanel mousewheel jscrollpane

5
推荐指数
2
解决办法
4646
查看次数